我如何重新订购LD_LIBRARY_PATH
?
编辑:
我对 LD_LIBRARY_PATH 很感兴趣,因为我遇到了这个问题:
其中一个错误是由于 libreadline.so 造成的,但我在这里解释如下:https://dba.stackexchange.com/questions/31143/libreadline-so-6这对于postgresql来说很重要。
Phil 在评论中对我说:
您可以通过重新排序 LD_LIBRARY_PATH 来解决这个问题,这样 /usr/local/lib/ 位于末尾而不是开头。
答案1
扩展 Ignacio Vazquez-Abrams 评论中的想法:找出如何正在设置此环境变量的当前值(以您不喜欢的顺序),以便更改它。
如果您不知道如何设置,请运行:
grep LD_LIBRARY_PATH= ~/.* /etc/*
这将审视所有点文件在您的主目录中以及 中的所有顶级文件中/etc
。您将获得没有权限来自查询的消息,但那没关系,它们不会出现在可能包含运行并设置脚本的地方LD_LIBRARY_PATH
。(所以你不是需要以 的方式运行该查询命令root
。)
如果你仅有的得到没有权限消息,则没有找到任何内容。如果您还有包含文件名、冒号和文件内容的行,则发现可能可能位于设置的位置。也可能不位于设置的位置。
您可以通过删除=
字符来扩展您的查询;但请注意,您更有可能出现误报,即变量正在被使用但未被设置。
如果失败了...
如果仍然找不到,你可以尝试自己设置变量。参见:
- 如何设置环境变量?
- 设置 PATH 以使其适用于所有用户,包括 root/sudo(不限于
PATH
)
如果它在由当前正在执行的任何机制设置之后被设置,则可以用任何您想要的值替换它的值(并且可以是它当前的重新排序版本)。
如果你尝试这样做,但它没有反应,或者你发现它包含文本你给出它,在它之前或之后有其他文本(或一些在前一些在后),那么至少这会给你提供关于什么时候它正在被设置,与通过您选择使用的任何方法进行设置相比。
如果在设置变量时,将错误顺序的文本添加到变量末尾,这很烦人,但只要所有相同的目录都是您先前排序的路径的一部分,它就等效了。(重要的是目录的位置第一的出现在路径中,因为在那里不匹配之后,在其他任何地方也不会匹配。)
如果你能提供更多有关为什么您需要这样做,这样可能会更容易找到更好的方法来发现当前正在设置它,并且可能可以提出关于如何最好地自己设置它的建议。
这个答案也适用于其他环境变量。
但是,对于某些变量,例如PATH
,有几个地方几乎总是设置它,因此类似的问题可能更容易解决。