有没有办法可以自动将 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. 应用于每个命令?

有没有办法可以自动将 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. 应用于每个命令?
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. ./myAppUsingAlibraryInThisDirectory
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. ~/dir/anotherAppUsingLibraryFromHere

有没有一种快捷方式,这样我就不需要为每个命令重新添加相同的前缀?

Windows 不需要这样的东西,但我更喜欢使用 Ubuntu。

答案1

当你做类似的事情时

SOME_VARIABLE=some_value some_command

您运行some_command,但将环境变量SOME_VARIABLE设置some_value为仅针对此单个命令。

当您在单独的行上写入赋值,而没有任何后续命令时,变量将在整个 shell 会话中设置为此值,即通常直到您关闭终端。您很可能必须对该export变量进行设置,以便它不仅在 shell 中可用,而且在其所有子 shell 和子进程中也可用,即您将运行的命令:

export SOME_VARIABLE=some_value

some_command
another_command and so on

这样,变量会持续整个 shell 会话,但不会跨会话保留。打开新终端后,变量就会消失。要保留所有 shell 会话的变量,必须在 shell 启动脚本中设置它们,通常是~/.profile。只需将导出变量的行附加到此文件的末尾,此后打开的所有 shell 都会设置该变量。

不过,对于您的具体情况,还有一点需要注意LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.:您应该避免.在任何与路径相关的环境变量中指定相对路径(此处引用您当前的工作目录)。这些相对路径将始终被解析每当您运行使用该目录的命令时,它相对于您的当前工​​作目录,而不是相对于您定义变量时的工作目录。这可能会产生意想不到的、令人困惑的副作用,甚至会造成安全威胁。请始终使用绝对路径。

相关内容