如何正确设置环境变量(可能不存在)

如何正确设置环境变量(可能不存在)

我想设置一个LD_LIBRARY_PATH可能存在也可能不存在的环境变量(它目前似乎不存在,但我不确定它是否会在某个时候存在)。我已经成功地设置了自己的变量,并扩展了变量PATH,方法是将我的变量放入path.sh其中/etc/profile.d/,这可以正常工作,但是这个新变量似乎不起作用。我尝试过扩展它或设置它,使用和不使用 if / else(见屏幕截图)。无论我做什么,它都不会被添加到环境变量中,我不知道为什么(因为它以前有效)。我确实重新启动了,所以这应该不是问题

脚本和输出

为了方便阅读,以下path.sh以文本形式提供内容:

export PATH="$PATH:/snap/cmake/current/bin"
export unreal_path="/DevShared/UnrealEngine"
export GRPC_DIR="/DevShared/Dev_SRS/grpc/1.20.0"
export LD_LIBRARY_PATH="/DevShared/UnrealEngine"

#LD_LIBRARY_PATH may not exist
#ldPath="$unreal_path"
#if [ $LD_LIBRARY_PATH -z ]
#then
#    export LD_LIBRARY_PATH="$ldPath"
#else
#    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$ldPath"
#fi

#echo $LD_LIBRARY_PATH

sudo bash /etc/profile.d/path.sh请注意,如果我通过执行后半部分而不是注释掉后半部分来调用脚本,bash 实际上会回显正确的路径。此外,该ldPath变量仅用于测试目的,实际上并非必需。

答案1

Ubuntu 帮助

注意:您只能在交互式 shell 中设置此环境变量。从 Ubuntu 9.04 Jaunty Jackalope 开始,LD_LIBRARY_PATH 不能在 $HOME/.profile、/etc/profile 或 /etc/environment 文件中设置。您必须使用 /etc/ld.so.conf.d/*.conf 配置文件。有关更多信息,请参阅 Launchpad 错误 #366728。

LD_LIBRARY_PATH因安全原因而被重置。

您需要添加一个conf文件/etc/ld.so.conf.d/

也可以看看:

相关内容