Bash 命令不从脚本执行,但在终端中输入时有效

Bash 命令不从脚本执行,但在终端中输入时有效

我有一个非常简单的脚本的一些奇怪的问题。我正在为库设置 LD_LIBRARY_PATH。当我在终端中输入此命令时:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/some/path
echo $LD_LIBRARY_PATH

输出echo显示链接器路径已正确添加。但是当我将完全相同的命令放入 .sh 文件中时:

#!bin/bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/some/path

执行后,输出echo显示未添加链接器路径。该脚本已设置为可执行文件,并从正确的目录执行。有人可以让我知道可能出了什么问题吗?谢谢你!

答案1

子 shell(您的脚本)可以从父 shell 继承变量,但反之则不然。

换句话说,您可以将变量从您正在使用的 shell 传递到您在该 shell 中运行的脚本。但是,脚本中设置的任何变量在您启动脚本的 shell 中都不起作用。

然而,脚本中的变量已设置,但仅限于为脚本打开的 shell。例如,如果您将“echo $LD_LIBRARY_PATH”行添加到脚本中,您将得到预期的结果。

如果您想为每次都有效的 shell 设置一个变量,请将其放入 .bashrc 文件(或 OSX 的 .bash_profile)中。

相关内容