当我在其中导出变量时,Shell脚本不起作用

时间:2016-02-17 12:14:38

标签: linux bash shell unix scripting

我有一个名为installscript的脚本,需要更改PATH变量。

BuildScript文件包含以下代码:

export PATH+=:foo/bar/
./installscript

正在运行./BuildScriptsource BuildScript失败并显示installscript

中的错误

导出PATH变量后,我发了NewScript并从中调用了BuildScript

export PATH+=:foo/bar/
./BuildScript.sh

正在运行的源代码NewScript

我不明白为什么单独运行BuildScript不会起作用。

2 个答案:

答案 0 :(得分:0)

这可能是因为您不应该在PATH中使用相对目录路径。相对路径是不以斜杠开头的路径名。尝试

PATH+=:/path/to/foo/bar    # Use absolute path starting with /

而不是调用./script.shscript.sh的脚本,让系统找到PATH的程序。

另请注意,执行脚本无法更改父级的环境。如果您需要,脚本必须来源 . /path/to/scriptsource /path/to/script

答案 1 :(得分:0)

PATH=$PATH:/path/to/foo/bar
. BuildScript.sh

# or

cd /path/to/foo/bar
. ./BuildScript.sh