從子程序更改當前目錄

從子程序更改當前目錄

如何安排 shell 腳本在子進程中執行,同時仍能夠更改呼叫 shell 的目前目錄?

答案1

你不能。

當子進程啟動時,父 shell 的環境被複製到子進程,從那時起,它們是不同的並且完全獨立的。子進程將無法直接修改父進程的環境。

孩子影響其父母的唯一方法是向父母發送訊息並讓父母採取行動:

eval "$( bash -c 'echo "cd /"' )"  # message through command string to stdout

或者

# message through USR1 signal triggers predefined action

trap 'cd /' USR1
bash -c 'kill -s USR1 "$PPID"'

相關內容