一篇對大家學(xué)習,理解linux很有用的文章
$ set –o noglob
$ ls answer?
answer?
子shell與export命令
用戶(hù)登錄到Linux系統后,系統將啟動(dòng)一個(gè)用戶(hù)shell。在這個(gè)shell中,可以使用shell命令或聲明變量,也可以創(chuàng )建并運行shell腳本程序。運行shell腳本程序時(shí),系統將創(chuàng )建一個(gè)子shell。此時(shí),系統中將有兩個(gè)shell,一個(gè)是登錄時(shí)系統啟動(dòng)的shell,另一個(gè)是系統為運行腳本程序創(chuàng )建的shell。當一個(gè)腳本程序運行完畢,它的腳本shell將終止,可以返回到執行該腳本之前的shell。從這種意義上來(lái)說(shuō),用戶(hù)可以有許多shell,每個(gè)shell都是由某個(gè)shell(稱(chēng)為父shell)派生的。
在子shell中定義的變量只在該子shell內有效。如果在一個(gè)shell腳本程序中定義了一個(gè)變量,當該腳本程序運行時(shí),這個(gè)定義的變量只是該腳本程序內的一個(gè)局部變量,其他的shell不能引用它,要使某個(gè)變量的值可以在其他shell中被改變,可以使用export命令對已定義的變量進(jìn)行輸出。export命令將使系統在創(chuàng )建每一個(gè)新的shell時(shí)定義這個(gè)變量的一個(gè)拷貝。這個(gè)過(guò)程稱(chēng)之為變量輸出。
[例]在本例中,變量myfile是在dispfile腳本程序中定義的。然后用export命令將變量myfile輸出至任何子shell,例如當執行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
在本節中已經(jīng)介紹了很多定制Bash的方法,但是迄今為止,這些方法都只是對當前Bash對話(huà)有用。只要用戶(hù)退出登錄,所做的一切改變都會(huì )丟失。所以應該在Bash的初始化文件中做永久性的修改。
用戶(hù)可以將每次啟動(dòng)Bash所需要執行的命令放入初始化文件中,最常見(jiàn)的命令就是alias命令和變量定義兩種。系統中的每個(gè)用戶(hù)在其主目錄中都有一個(gè).bash_profile文件,Bash每次啟動(dòng)時(shí)都將讀取該文件,其中包含的所有命令都將被執行。
下面便是默認.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
評論