首页 > 解决方案 > 如何从被调用的进程中导出 PATH

问题描述

我写了一个小gradle-path工具:

#!/usr/bin/env sh
export PATH=$PATH:/cygdrive/c/Gradle/gradle-3.5/bin

但是,当我从我的 shell 调用它时,PATH 并没有在最后改变。

如果我理解正确,则未在父进程中设置该变量。

如何使这成为可能?

标签: bashshellpathexportzsh

解决方案


正如切普纳所说——

在它自己的子shell(通常)中执行它,比如

gradle-path

将创建一个子进程,在该子进程的环境中设置 PATH,然后在子进程退出时解构该环境,在父进程的内存中什么也不做。

要更改调用者中的 PATH,您必须在调用者的环境中运行它 - “源”它 - 如下所示:

. gradle-path

或这个:

source gradle-path

这些基本上会将列出的文件中的命令插入到调用者的解析流中,就好像它们已经写在那里一样。


推荐阅读