在“init”文件中临时设置路径

在“init”文件中临时设置路径

我有一个“init”文件,内容如下

#!/bin/sh

export PATH=$PATH:/home/me/morph_numsys/software/bin

我只想为这个 bash 会话设置该文件夹的路径。但是,当我执行脚本时sh init,它仍然无法识别路径。但是,如果我只是说export PATH=$PATH:/home/me/morph_numsys/software/bin,那么它就可以正常工作。我有什么想法可以做到这一点吗?

我在 ubuntu 和 xterm 上。

答案1

当您说“仅针对此 bash 会话”时,我假设您指的是调用脚本的 bash 会话。

当您执行脚本时,它会获得一个新的 shell 环境。因此,当您导出变量时,您是将其导出到新的 shell 环境,而不是其父环境。据我所知,没有办法访问父环境。但是,由于您使用的是 bash,因此可能有以下几种解决方案:

使用source

而不是像这样执行脚本:/path/to/init.shdosource /path/to/init.sh

来自bash 手册页:

源文件名[参数]

在当前 shell 环境中读取并执行 filename 中的命令,并返回 filename 中最后执行的命令的退出状态。

将脚本设为 shell 函数并将其放入 .bashrc 中

另一种选择是使 init 成为一个函数并将其放入 .bashrc 中,如下所示:

function init {
    export PATH=$PATH:/home/me/morph_numsys/software/bin
}

然后从终端你可以运行init.

相关内容