2
好的簡單的bash腳本問題 - 不要笑。 我的劇本只是改變目錄:爲什麼這個腳本沒有改變目錄
echo on;
echo "running script";
CURRENT_DIR=.;
cd ..;
pwd;
我可以看到它改變目錄中的回聲,但是當它完成它,我的終端仍然是在同一目錄下。有小費嗎?
好的簡單的bash腳本問題 - 不要笑。 我的劇本只是改變目錄:爲什麼這個腳本沒有改變目錄
echo on;
echo "running script";
CURRENT_DIR=.;
cd ..;
pwd;
我可以看到它改變目錄中的回聲,但是當它完成它,我的終端仍然是在同一目錄下。有小費嗎?
當您運行bash
腳本時,它將在其自己的shell中運行。這意味着它有自己的shell環境,包括當前的工作目錄。如果您在腳本中使用cd
,那麼該腳本將在新的當前目錄中運行。但是當它完成時,你仍然處於你的用戶級shell所在的當前目錄中,因爲子shell不會觸及它。
如果你想影響當前shell環境,一個辦法是用.
執行它:
. my_script
這就像跑sh my_script
但當前用戶shell環境內運行。
僅供參考在腳本中不需要結尾分號(';')。如果您想在同一行放置多個命令,分號是命令分隔符。 – lurker
不是你的問題,但也許很好知道:「CURRENT_DIR =」。不存儲當前目錄名稱,它只存儲點本身。如果你想存儲當前目錄,例如爲了稍後返回,請執行「CURRENT_DIR = $ PWD」。 –