Linker 在.zshrc中设置时未使用LD_库_路径

Linker 在.zshrc中设置时未使用LD_库_路径,linker,shared-libraries,zsh,Linker,Shared Libraries,Zsh,在我的.zshrc文件中,我有以下行: export LD_LIBRARY_PATH='~/.local/lib' 我可以通过从命令行回显变量来确认变量设置是否正确: > echo $LD_LIBRARY_PATH ~/.local/lib 我有一个程序需要一个库,foo.so.1,可以在本地lib目录中找到。直接从命令行运行失败: > bar -v 123 bar: error when loading shared libraries: foo.so.1: cannot op

在我的
.zshrc
文件中,我有以下行:

export LD_LIBRARY_PATH='~/.local/lib'
我可以通过从命令行回显变量来确认变量设置是否正确:

> echo $LD_LIBRARY_PATH
~/.local/lib
我有一个程序需要一个库,
foo.so.1
,可以在本地lib目录中找到。直接从命令行运行失败:

> bar -v 123
bar: error when loading shared libraries: foo.so.1: cannot open shared object file: No such file or directory
但是,如果在运行命令之前手动设置LD_LIBRARY_PATH,一切正常:

> LD_LIBRARY_PATH=~/.local/lib bar -v 123
Success!

我的问题是:为什么在运行命令之前立即设置变量会起作用,而在
.zshrc
中设置变量会失败?

请确保为您的env变量分配了路径,并将“~”扩展到您的主目录,因为在读取变量时不会发生这种扩展


您的(修订)代码使用单引号。这些将阻止扩展的发生。

您是否尝试过使用扩展版的
~
。它可能是在内部使用它导致~被扩展为“/home/user”(或它指向的任何对象),而从环境中读取此值并没有进行扩展。问题是,
~
没有得到扩展,但原因不同:当我在问题中重新键入
.zshrc
行时,我写了周围的单引号(见编辑后的问题)。单引号阻止了磁贴扩展;移除它们可以让一切正常工作。@rpy如果你加上这个作为回答,我很乐意接受