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