歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux source命令

Linux source命令

日期:2017/2/28 15:30:19   编辑:Linux教程

source 命令
source 命令 (從 C Shell 而來) 是 bash shell 的內置命令。
點命令(就是一個點符號.,從 Bourne Shell 而來) 是 source 的另一名稱。

這兩個命令都以一個腳本文件名為參數,該腳本將作為當前 shell 的環境執行,即不會啟動一個新的子進程。所有在腳本中設置的變量將成為當前 Shell 的一部分,同樣的,當前腳本中設置的變量也將作為腳本的環境。

source (或.) 命令通常用於重新執行剛修改的初始化文件,如 .bash_profile 和 .profile 等等。例如,如果在登錄後對 .bash_profile 中的 EDITER 和 TERM 變量做了修改,則可以用 source 命令重新執行 .bash_profile 中的命令而不用注銷並重新登錄。像 .bash_profile 或其它類似的 Shell 腳本這樣,文件無需可執行權限即可用 source 或點命令執行。

source 命令的一個妙用

在編譯核心時,常常要反復輸入一長串命令,如
make mrproper
make menucon**
make dep
make clean
make bzImage
.......

這些命令既長,又繁瑣。而且有時候容易輸錯,浪費你的時間和精力。如果把這些命令做成一個文件,讓它自動按順序執行,對於需要多次反復編譯核心的用戶來說,會很方便。用 source 命令可以辦到這一點。它的作用就是把一個文件的內容當成是 shell 來執行。

例如,先在 /usr/src/linux-2.4.20 目錄下建立一個文件,取名為 make_command:

在其中輸入如下內容:

make mrproper &&
make menucon** &&
make dep &&
make clean &&
make bzImage &&
make modules &&
make modules_install &&
cp arch/i386/boot/bzImge /boot/vmlinuz_new &&
cp System.map /boot &&
vi /etc/lilo.conf &&
lilo -v

文件建立好之後,以後每次編譯核心,只需要在 /usr/src/linux-2.4.20 下輸入
source make_command

就行了。這個文件也完全可以做成腳本,只需稍加改動即可。這裡主要是讓大家理解 source 的用法。如果你用的不是 lilo 來引導系統,可以把最後兩句話去掉。配置你自己的引導程序來引導新內核。

shell 編程中的命令有時和 C 語言是一樣的。&& 表示與,|| 表示或。把兩個命令用 && 接起來,如 make mrproper && make menucon** ,表示要第一個命令執行成功才能執行第二個命令。對執行順序有要求的命令能保證一旦有錯誤發生,下面的命令不會盲目地繼續執行。

運行如下命令./set_env.sh設置相關環境變量時發現:當此命令運行結束後,腳本中所設置的環境變量仍為空,感覺此腳本沒有執行;運行. set_env.sh腳本執行成功。通過上網查詢,發現是由於source命令與shell scripts的作用范圍不同而導致的。

source命令與shell scripts的區別:
source在當前bash環境下執行命令,而scripts是啟動一個子shell來執行命令。這樣如果把設置環境變量(或alias等等)的命令寫進scripts中,就只會影響子shell,無法改變當前的BASH,所以通過文件(命令列)設置環境變量時,要用source 命令。

Copyright © Linux教程網 All Rights Reserved