bash - 如何从被调用的进程中导出 PATH
问题描述
我写了一个小gradle-path
工具:
#!/usr/bin/env sh
export PATH=$PATH:/cygdrive/c/Gradle/gradle-3.5/bin
但是,当我从我的 shell 调用它时,PATH 并没有在最后改变。
如果我理解正确,则未在父进程中设置该变量。
如何使这成为可能?
解决方案
正如切普纳所说——
在它自己的子shell(通常)中执行它,比如
gradle-path
将创建一个子进程,在该子进程的环境中设置 PATH,然后在子进程退出时解构该环境,在父进程的内存中什么也不做。
要更改调用者中的 PATH,您必须在调用者的环境中运行它 - “源”它 - 如下所示:
. gradle-path
或这个:
source gradle-path
这些基本上会将列出的文件中的命令插入到调用者的解析流中,就好像它们已经写在那里一样。