如何安排 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"'