我有一个非常简单的脚本的一些奇怪的问题。我正在为库设置 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)中。