shell中無法使用cd命令的原因及解決方法
前言
在我們使用shell編寫腳本的時候,有時會需要切換到其他的目錄中。但是,當(dāng)我們按往常的格式一樣在腳本中寫入cd后,要切換的目錄是存在的,但是當(dāng)執(zhí)行腳本,我們會收到報錯,原因是cd的命令在腳本中沒有實現(xiàn)。
常見于遠(yuǎn)程執(zhí)行目標(biāo)服務(wù)器中的腳本。
下面介紹的就是這個常見問題的原因及解決方法。
原因
在shell在執(zhí)行腳本的時候,會創(chuàng)建一個子shell,并在子shell中逐條執(zhí)行腳本中的指令
子shell會從父shell中繼承了環(huán)境變量,但是執(zhí)行后不會改變父shell的環(huán)境變量
在子shell中的操作和環(huán)境變量不會影響父進(jìn)程,在執(zhí)行完shell后又回到了父進(jìn)程
解決方法
【1】最簡的方法
只需要source腳本即可。
source 命令可以在當(dāng)前的shell環(huán)境下執(zhí)行腳本,不會創(chuàng)建子shell ,直接影響父進(jìn)程。
source命令可直接換成 “.”。
source /root/alis.sh 或 . /root/alis.sh
遠(yuǎn)程執(zhí)行腳本:
ssh ip "source /root/alias.sh"
【2】補(bǔ)充
實際上,我們在使用一些命令的時候,如果前提是必須先使用cd切換目錄,再執(zhí)行命令,而該條命令執(zhí)行不成功,8成都是這個原因。因此需要用source執(zhí)行腳本,即可解決這個問題。
到此這篇關(guān)于shell中無法使用cd命令的原因及解決方法的文章就介紹到這了,更多相關(guān)shell中無法使用cd命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell腳本中執(zhí)行sql語句操作mysql的5種方法
這篇文章主要介紹了Shell腳本中執(zhí)行sql語句操作mysql的5種方法,本文講解了將SQL語句直接嵌入到shell腳本文件中、命令行調(diào)用單獨的SQL文件、使用管道符調(diào)用SQL文件等方法,需要的朋友可以參考下2014-10-10Linux bash刪除文件中含“指定內(nèi)容”的行功能示例
這篇文章主要介紹了Linux bash刪除文件中含“指定內(nèi)容”的行功能,結(jié)合具體實例形式分析了Linux bash刪除文件指定內(nèi)容的實現(xiàn)原理與相關(guān)操作技巧,需要的朋友可以參考下2017-06-06