2011-09-29 57 views
4

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

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

+0

会更好在superuser.com堆栈交换站点上。 – chown

+0

这也适合unix.stackexchange.com。 – Cascabel

回答

12

找到最简单的方法修改您的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

...

+0

另请尝试添加**源**字到grep ... – gavenkoa

+0

当您获取修改bash行为的** ALL **文件的列表时,您需要grep他们以获取** PATH = **模式... – gavenkoa

+0

如上所述上面,确保grep for'source':'bash --login -xv -c“echo”2>&1 | grep -E“(\。| source)”'。 –

0

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

5

你不应该让一些随机的系统管理员决定什么在你的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中世界可写的目录。

+0

$ getconf PATH结果为 /bin:/ usr/bin 我不确定/ usr/X11R6/bin是什么东西,或者在我的路径中仍然需要它们。有什么想法吗? – mbarrows

+0

如果您不使用X11窗口系统(使用xterm,firefox,acroread等),则不需要/ usr/X11R6/bin。如果您不确定,请输入'ls/usr/X11R6/bin'来查看是否需要任何列出的可执行文件。我会说它不会伤害你的PATH。 – Jens

2

您总是可以随意查看每个$PATH组件的目录内容,并决定是否使用其中的程序。如果你不使用这些程序,那很有可能,你不会因从$ PATH中删除目录而受到伤害。如果该目录不存在,那么您可以完全安全地将其删除。

令人费解的是,目录显示在您的个人资料和相关文件中。你也应该检查~/.profile。您还应该查看诸如/etc/profile之类的资料。

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

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