2015-02-09 77 views
0

我有一个复杂的PATH,我想修改,但我不明白该怎么做。我甚至无法弄清楚某个目录是如何到达那里的。此外,它有两次。编辑路径的顺序真的很难吗?有没有办法简单地编辑每个决定路径的文件?Unix路径需要重新排序

+0

评论[如何防止在csh中复制路径变量](http://stackoverflow.com/a/137981/15168)我的答案(链接)包含一个Bourne/Korn/Bash shell脚本,用于删除重复名称一个PATH,可用于删除所选条目(并且您可以轻松地在PATH的任一端添加条目;不直接支持在中间插入条目)。还有[如何操作shell脚本中的路径元素](http://stackoverflow.com/questions/273909/how-do-i-manipulate-path-elements-in-shell-scripts/274448#274448)。 – 2015-02-09 03:06:16

回答

0

不难。该路径是存储在进程环境PATH变量中的冒号分隔的字符串。如果你改变字符串的值,你的命令搜索路径将会改变。这里的所有都是它的。

PATH=/bin:/usr/bin:/usr/local/bin:$HOME/bin:. 

当你从一个系统默认的.bashrc文件/ etc和您的本地配置.RC和.bashrc中文件记录中创建的默认路径。您可以从$ HOME/.bashrc中修改或编辑PATH

编辑:通常,因为它很容易更改,所以bashrc文件包含的每个脚本(可以直接或通过其他脚本)都可以修改路径。要知道哪个人正在做出特定的改变,你必须跟踪脚本。

+0

我查看了/ etc/bashrc,〜/ .bashrc和〜/ .profile,并没有找到我想要删除的目录。这就是我为什么挣扎着。我应该在哪里看?我知道/etc/paths.d也有助于PATH变量,但它也不在那里。 – 2015-02-09 02:18:07

+0

尝试平分搜索 - 在〜/ .bashrc的顶部打印$ PATH,以查看它是由系统还是本地rc文件添加的。再次登录(例如'ssh localhost')并查看它说的是什么。然后你可以从那里上下移动。 – Andras 2015-02-09 02:21:50

+0

可能更简单,只是后处理PATH删除不需要的目录 - PATH = $(echo -n $ PATH | sed -e's |:/ unwelcome/path:|:| g') ' – Andras 2015-02-09 02:29:43