【 source】Linux source 命令

[root@stu ~]# cat /root/.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

export PATH

請問/root/.bash_profile這個文件中

if[-f ~/.bashrc]; then

??????? .~/.bashrc

fi

這個語句是什么意思?

普通的shell腳本

-f ~/.bashrc? 判斷home目錄的.bashrc是普通文件的話 返回真

. ~/.bashrc 等于source ~/.bashrc? 讓home目錄下的.bashrc里的設(shè)置生效

關(guān)于文件的判斷如下

-r file     用戶可讀為真

-w file     用戶可寫為真

-x file     用戶可執(zhí)行為真

-f file     文件為正規(guī)文件為真

-d file     文件為目錄為真

-c file     文件為字符特殊文件為真

-b file     文件為塊特殊文件為真

-s file     文件大小非0時為真

-t file     當(dāng)文件描述符(默認(rèn)為1)指定的設(shè)備為終端時為真?

source命令用法:

source FileName

作用:在當(dāng)前bash環(huán)境下讀取并執(zhí)行FileName中的命令。

注:該命令通常用命令“.”來替代。

如:source .bash_rc 與?.?.bash_rc 是等效的。


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

同樣的,當(dāng)前腳本中配置的變量也將作為腳本的環(huán)境,source(或點)命令通常用于重新執(zhí)行剛修改的初始化文檔,如 .bash_profile 和 .profile 等等。例如,假如在登錄后對 .bash_profile 中的 EDITER 和TERM 變量做了修改,則能夠用source命令重新執(zhí)行 .bash_profile 中的命令而不用注銷并重新登錄。

比如您在一個腳本里export $KKK=111 ,假如您用./a.sh執(zhí)行該腳本,執(zhí)行完畢后,您運行 echo $KKK,發(fā)現(xiàn)沒有值,假如您用source來執(zhí)行 ,然后再echo,就會發(fā)現(xiàn)KKK=111。因為調(diào)用./a.sh來執(zhí)行shell是在一個子shell里運行的,所以執(zhí)行后,結(jié)構(gòu)并沒有反應(yīng)到父shell里,但是source不同他就是在本shell中執(zhí)行的,所以能夠看到結(jié)果。

這兩個命令都以一個腳本為參數(shù),該腳本將作為當(dāng)前shell的環(huán)境執(zhí)行,即不會啟動一個新的子進(jìn)程。所有在腳

本中設(shè)置的變量將成為當(dāng)前Shell的一部分。同樣的,當(dāng)前腳本中設(shè)置的變量也將作為腳本的環(huán)境,source(或點)命令通常用于重新執(zhí)行剛修改的初始化文件,如 .bash_profile 和 .profile 等等。

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容