我的路径有很多条目是很久以前由脚本添加的。它们不在我的.bashrc
、.bash_profile
或.bash_login
中。
我担心在.bashrc
中重置我的路径会产生长期不良影响。有没有办法找出路径被添加到哪里并手动删除它们?这些路径总是被文件添加的吗?还是路径会被缓存到某个地方?如果是后者,清理起来容易吗?
查找修改了你的 PATH 的人最简单的方法是运行:
$ 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
...
source
:bash --login -xv -c "echo" 2>&1 | grep -E " (\.|source) "
。 - Alexander Klimetschek您不应该让随意的系统管理员决定您的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"
.profile
或者等价的文件中。请注意,出于安全原因,你不应该将. 或可被所有人写入的目录添加到你的 PATH 路径中。ls /usr/X11R6/bin
以查看是否需要任何列出的可执行文件。我认为把它加入PATH也无妨。 - Jens您可以随时查看$PATH
中每个组件的目录内容,决定是否使用其中的程序。如果不使用这些程序,则很可能可以从$PATH中删除该目录而不会受到影响。如果该目录不存在,则完全可以安全地将其删除。
令人困惑的是,这些目录出现在您的配置文件和相关文件中。您应该检查~/.profile
等文件。您还应该查看诸如/etc/profile
之类的材料。
就我个人而言,我认为我掌控了我的$PATH
。我根据自己的规则从头开始设置它,并选择我需要的目录。您无需接受系统管理员为您设置的路径,但不应轻易删除他们添加的PATH组件。但是,他们对于什么是理想的看法可能与您的不同。
唯一的长期不良影响可能是某些您使用的程序停止工作,因为它依赖于旧版本的$PATH中的某些内容。因此,在开始更改PATH之前,请记录您之前所拥有的内容 - 但不要害怕根据自己的需求调整PATH。
请检查您的/etc/profile
文件,并根据您的操作系统版本检查/etc/profile.d/
目录。