答案1
如您所示執行腳本會在子 shell 中建立複製的環境,而您所做的任何變更(例如設定目錄或環境變數)僅影響此子 shell 環境,而不影響呼叫 shell。
為了從腳本更改目前 shell,您必須使用source
或.
命令在目前 shell 中執行該腳本:
. ./updir.sh 5
您可以使用別名使其自動執行:
alias updir='. ./updir.sh'
或者,您可以使用函數而不是腳本:
updir()
{ for i in `seq 1 $1`;
do cd ../;
done
}
答案2
因為腳本是在子 shell 中運行的,它單獨追蹤當前工作目錄。最簡單的解決方案是使用一個函數:
function updir() {
for i in $(seq 1 $1); do
cd ..
done
}