从子进程更改当前目录

从子进程更改当前目录

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

相关内容