在學(xué)習(xí)的時候,經(jīng)常要切換到固定的文件夾,于是寫了個shell腳本用cd命令切換卻發(fā)現(xiàn)目錄切換不了。
代碼如下:
#! /bin/bash# c.shcd /mnt/hgfs/vmsharepwd
解釋:執(zhí)行的時候是./c.sh來執(zhí)行的,這樣執(zhí)行的話終端會產(chǎn)生一個子shell(類似于C語言調(diào)用函數(shù)),子shell去執(zhí)行我的腳本,在子shell中已經(jīng)切換了目錄了,但是子shell一旦執(zhí)行完,馬上退出,子shell中的變量和操作全部都收回。回到終端根本就看不到這個過程的變化。
驗證解釋:
#! /bin/bash# c.shhistorycd /mnt/hgfs/vmsharesleep1 #延遲1spwd
首先按照 ./c.sh執(zhí)行,這時候終端沒有切換目錄,history執(zhí)行的結(jié)果是空的,說明子shell里面沒有歷史命令(證明前面的解釋是正確的)。
解決方法:source c.sh或者. ./c.sh,這時候就是直接在終端的shell執(zhí)行腳本了,沒有生成子shell,執(zhí)行的結(jié)果就是輸出歷史命令,并且切換了目錄。
注意上面. ./c.sh .和.中間有個空格!
以上這篇基于shell腳本中cd命令無效的解決方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答