我如何重新排序 LD_LIBRARY_PATH?

我如何重新排序 LD_LIBRARY_PATH?

我如何重新订购LD_LIBRARY_PATH

编辑:

我对 LD_LIBRARY_PATH 很感兴趣,因为我遇到了这个问题:

我无法从 kubuntu 更新、升级和删除我的应用程序

其中一个错误是由于 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,有几个地方几乎总是设置它,因此类似的问题可能更容易解决。

相关内容