一篇對(duì)大家學(xué)習(xí),理解linux很有用的文章
$ set –o noglob
$ ls answer?
answer?
子shell與export命令
用戶登錄到Linux系統(tǒng)后,系統(tǒng)將啟動(dòng)一個(gè)用戶shell。在這個(gè)shell中,可以使用shell命令或聲明變量,也可以創(chuàng)建并運(yùn)行shell腳本程序。運(yùn)行shell腳本程序時(shí),系統(tǒng)將創(chuàng)建一個(gè)子shell。此時(shí),系統(tǒng)中將有兩個(gè)shell,一個(gè)是登錄時(shí)系統(tǒng)啟動(dòng)的shell,另一個(gè)是系統(tǒng)為運(yùn)行腳本程序創(chuàng)建的shell。當(dāng)一個(gè)腳本程序運(yùn)行完畢,它的腳本shell將終止,可以返回到執(zhí)行該腳本之前的shell。從這種意義上來(lái)說(shuō),用戶可以有許多shell,每個(gè)shell都是由某個(gè)shell(稱為父shell)派生的。
在子shell中定義的變量只在該子shell內(nèi)有效。如果在一個(gè)shell腳本程序中定義了一個(gè)變量,當(dāng)該腳本程序運(yùn)行時(shí),這個(gè)定義的變量只是該腳本程序內(nèi)的一個(gè)局部變量,其他的shell不能引用它,要使某個(gè)變量的值可以在其他shell中被改變,可以使用export命令對(duì)已定義的變量進(jìn)行輸出。export命令將使系統(tǒng)在創(chuàng)建每一個(gè)新的shell時(shí)定義這個(gè)變量的一個(gè)拷貝。這個(gè)過(guò)程稱之為變量輸出。
[例]在本例中,變量myfile是在dispfile腳本程序中定義的。然后用export命令將變量myfile輸出至任何子shell,例如當(dāng)執(zhí)行printfile腳本程序時(shí)產(chǎn)生的子shell。
dispfile腳本程序清單:
/**************begin dispfile**************/
myfile=”List”
export myfile
echo “Displaying $myfile”
pr –t –n $myfile
printfile
/**************end dispfile***************/
printfile腳本程序清單:
/**************begin printfile**************/
echo “Printing $myfile”
lpr $myfile
/**************end printfile**************/
$dispfile
Displaying List
1 screen
2 modem
3 paper
Printing List
$
定制Bash
在本節(jié)中已經(jīng)介紹了很多定制Bash的方法,但是迄今為止,這些方法都只是對(duì)當(dāng)前Bash對(duì)話有用。只要用戶退出登錄,所做的一切改變都會(huì)丟失。所以應(yīng)該在Bash的初始化文件中做永久性的修改。
用戶可以將每次啟動(dòng)Bash所需要執(zhí)行的命令放入初始化文件中,最常見(jiàn)的命令就是alias命令和變量定義兩種。系統(tǒng)中的每個(gè)用戶在其主目錄中都有一個(gè).bash_profile文件,Bash每次啟動(dòng)時(shí)都將讀取該文件,其中包含的所有命令都將被執(zhí)行。
下面便是默認(rèn).bash_profile文件的代碼:
#.bash_profile
#Get the aliases and functions
if [-f ~/.bashrc ];then
.~/.bashrc
fi
#User specific environment and startup programs
PATH=$PATH:$HOME/bin
ENV=$HOME/.bashrc
USERNAME=””
Export USERNAME ENV PATH
評(píng)論