【问题标题】:duplicated environment paths after sourcing .cshrc采购 .cshrc 后重复的环境路径
【发布时间】:2023-08-01 15:36:01
【问题描述】:

在我的 .cshrc 中,LD_LIBRARY_PATH 原来是这样的:

setenv LD_LIBRARY_PATH path_one:$LD_LIBRARY_PATH

我编辑我的 .cshrc 以将 path_one 替换为 path_two。我的文件现在看起来像这样:

setenv LD_LIBRARY_PATH path_two:$LD_LIBRARY_PATH

但在重新加载文件 (source ~/.cshrc) 后,我在 LD_LIBRARY_PATH 中同时获得了 path_onepath_two

% echo $LD_LIBRARY_PATH
path_two:path_one

我不想在路径中包含path_one。谁能告诉我一种无需注销/重新登录即可更新 .cshrc 文件的有效方法吗?

【问题讨论】:

    标签: linux bash path environment-variables csh


    【解决方案1】:

    当您获取文件时,该分配行正在运行。它将静态值添加到 $LD_LIBRARY_PATH 变量的当前值之前。

    连续三次获取文件,然后将该路径添加到前面三次。

    没有可以恢复的“默认”值(除非您自己保存一个并小心使用它)。简而言之,您可以注销并重新登录,或者手动将当前值编辑为您想要的值(通过从正在运行的 shell echo "$LD_LIBRARY_PATH" 手动使用 setenv 来获取当前值并从中复制和粘贴它等等)。

    话虽如此,在$LD_LIBRARY_PATH 中存在额外路径时没有任何真正的危害。它只是在应用程序启动期间花费一次打开尝试(但这应该相当快)。

    如果路径确实存在并且包含您不想使用的库,那当然是另一回事了。

    【讨论】:

    • 如何编辑当前值(即 LD_LIBRARY_PATH)?目前,我知道的唯一方法是编辑 .cshrc 文件,但正如您所说,它会将新值添加到旧值中。
    • echo "$LD_LIBRARY_PATH" 然后setenv LD_LIBRARY_PATH "<copy and paste the right bits of the previous echo output>"setenv 或获取您的 .cshrc 文件并没有什么特别之处。
    • 我认为这是目前唯一的解决方案。请更新您的答案,以便我将其标记为“已接受”。 tnx