用bash清理$ PATH

时间:2011-09-29 16:55:54

标签: bash path

我的路径有很多很久以前由脚本添加的条目。它们不在.bashrc.bash_profile.bash_login

我担心在.bashrc重置我的路径会产生不良的长期结果。有没有办法找到添加到我的路径的地方并手动删除它们?事物总是按文件添加还是路径缓存在某处?如果是后者,是否容易清理它?

4 个答案:

答案 0 :(得分:14)

找到修改路径的最简单方法是运行:

  $ bash --login -i -xv 2>&1 | grep ' \. '

例如我得到了:

+ . /etc/profile.d/bash_completion.sh
        . /etc/bash_completion
++ . /etc/bash_completion
+++ . /etc/bash_completion.d/abook
+++ . /etc/bash_completion.d/ant
+ . /etc/profile.d/lapack0.sh
+ . /etc/profile.d/openssl.sh
+ . /etc/profile.d/qt3-devel.sh
+ . /etc/profile.d/tetex-profile.sh
+ . /etc/profile.d/xinit.sh
+ . /etc/bash.bashrc

...

答案 1 :(得分:7)

你不应该让一些随机的系统管理员决定你的PATH中的内容,你应该将它设置为你需要的PATH 。你从

开始
# POSIX way of getting the system's PATH to POSIX tools:
PATH=$(getconf PATH)   # Or /usr/bin/getconf PATH.

随后是您需要的任何内容,例如

PATH="$PATH:/usr/local/bin"
PATH="$PATH:/usr/local/sbin"
PATH="$PATH:$HOME/bin"

并将其放入shell的.profile或等效内容中。请注意,出于安全原因,您想要.或全局可写目录。

答案 2 :(得分:3)

您总是可以自由查看$PATH的每个组件的目录内容,并决定是否使用其中的程序。如果您不使用这些程序,则可能会从$ PATH中删除目录而不会受到影响。如果目录不存在,那么您可以完全安全地删除它。

令人费解的是,这些目录显示在您的个人资料和相关文件中。您也应该检查~/.profile。您还应该查看/etc/profile等材料。

就个人而言,我认为我负责我的PATH。我根据我的规则从头开始设置它,选择我需要的目录。您没有义务接受系统管理员为您设置的内容,但您不应该闲置删除他们添加的PATH组件。但是他们对什么是理想的看法可能与你的不同。

唯一的长期不良影响可能是你使用的某个程序停止工作,因为它依赖旧版本的$ PATH中的某些内容。因此,在开始搞乱PATH之前记录下你的内容 - 但不要害怕调整PATH以适合自己。

答案 3 :(得分:0)

检查/etc/profile文件,并根据您的操作系统版本/etc/profile.d/目录。