Linux中source命令的用法
source命令:
source命令也稱為“點命令”,也就是一個點符號(.)。source命令通常用于重新執行剛修改的初始化文件,使之立即生效,而不必注銷并重新登錄。
**用法: **
source filename 或 . filename
source命令除了上述的用途之外,還有一個另外一個用途。在對編譯系統核心時常常需要輸入一長串的命令,如:
make mrproper
make menuconfig
make dep
make clean
make bzImage
…………
如果把這些命令做成一個文件,讓它自動順序執行,對于需要多次反復編譯系統核心的用戶來說會很方便,而用source命令就可以做到這一點,它的作用就是把一個文件的內容當成shell來執行,先在linux的源代碼目錄下(如/usr/src/linux-2.4.20)建立一個文件,如make_command,在其中輸入一下內容:
make mrproper &&
make menuconfig &&
make dep &&
make clean &&
make bzImage &&
make modules &&
make modules_install &&
cp arch/i386/boot/bzImage /boot/vmlinuz_new &&
cp System.map /boot &&
vi /etc/lilo.conf &&
lilo -v
文件建立好之后,每次編譯核心的時候,只需要在/usr/src/linux-2.4.20下輸入:
source make_command
即可,如果你用的不是lilo來引導系統,可以把最后兩行去掉,配置自己的引導程序來引導內核。
順便補充一點,&&命令表示順序執行由它連接的命令,但是只有它之前的命令成功執行完成了之后才可以繼續執行它后面的命令。
source filename 與 sh filename 及./filename執行腳本的區別在那里呢?
1.當shell腳本具有可執行權限時,用sh filename與./filename執行腳本是沒有區別得。./filename是因為當前目錄沒有在PATH中,所有"."是用來表示當前目錄的。
2.sh filename 重新建立一個子shell,在子shell中執行腳本里面的語句,該子shell繼承父shell的環境變量,但子shell新建的、改變的變量不會被帶回父shell,除非使用export。
3.source filename:這個命令其實只是簡單地讀取腳本里面的語句依次在當前shell里面執行,沒有建立新的子shell。那么腳本里面所有新建、改變變量的語句都會保存在當前shell里面。
舉例說明:
1.新建一個test.sh腳本,內容為:A=1
2.然后使其可執行chmod +x test.sh
3.運行sh test.sh后,echo $A,顯示為空,因為A=1并未傳回給當前shell
4.運行./test.sh后,也是一樣的效果
5.運行source test.sh 或者 . test.sh,然后echo $A,則會顯示1,說明A=1的變量在當前shell中