我有一个“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.sh
dosource /path/to/init.sh
来自bash 手册页:
源文件名[参数]
在当前 shell 环境中读取并执行 filename 中的命令,并返回 filename 中最后执行的命令的退出状态。
将脚本设为 shell 函数并将其放入 .bashrc 中
另一种选择是使 init 成为一个函数并将其放入 .bashrc 中,如下所示:
function init {
export PATH=$PATH:/home/me/morph_numsys/software/bin
}
然后从终端你可以运行init
.