更改父shell的目录

Mik*_*ike 0 bash csh tcsh sh

我想知道可以用来从子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"

Wes*_*ker 5

不,你不能.这是设计的.父进程不应该受到孩子的结果的影响而没有他们想要受到影响(否则子shell可以向父母做各种令人讨厌的棘手的事情).

你可以做的是让shell将信息保存到文件中或打印目录或......如果父母想要,父母至少可以使用它来更改目录.