我想知道可以用来从子shell更改父shell的目录的任何机制.例如,我在$ HOME中运行脚本"settings.sh".我的$ HOME有一个目录$ HOME/TEST/run.如果我的"settings.sh"脚本如下所示
#!/bin/bash
# some shell related code
# some shell related code
cd $HOME/TEST/run
exit 0
Run Code Online (Sandbox Code Playgroud)
我在$ HOME的命令提示符下执行上面的脚本.执行后,我希望我的命令提示符在目录$ HOME/TEST/run中.我明白在子shell中,它正在被cd到$ HOME/TEST/run,但是在执行结束时,它又回到了$ HOME.
使用单个脚本是否有任何优雅的方法来完成上述操作.一种方法是修改脚本"settings.sh"以生成另一个脚本,然后使用".$ HOME/generatedScript.sh"
不,你不能.这是设计的.父进程不应该受到孩子的结果的影响而没有他们想要受到影响(否则子shell可以向父母做各种令人讨厌的棘手的事情).
你可以做的是让shell将信息保存到文件中或打印目录或......如果父母想要,父母至少可以使用它来更改目录.