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