我经常需要在.bashrc中为PATH环境变量添加新路径,如下所示:export PATH = / usr / local / bin:$ PATH然后为了使它生效,我总是'source~ / .bashrc'或' . 〜/ .bashrc',虽然我发现这样做的一个缺点让我感到不舒服 .
如果我继续这样做,PATH将会越来越长,有许多重复的条目,例如在上一个命令中,如果我两次获取它,PATH的值将是PATH = / usr / local / bin:/ usr / local / bin:/ usr / local / bin:$ PATH(< - 原始路径) .
是否有更好的方法在bashrc中将新路径附加到PATH而不会让它变得难看?
6 回答
另一种方法是检查是否未设置OPATH . 如果是,请将其设置为PATH . 这将是您原来的路径 .
(代码未经测试......)
如果您愿意接受shell的更改,
zsh
具有declare -U
用于此目的:它将自动从数组中删除重复项,同时保持优先级 . 它还允许您使用$path
而不是$PATH
.或者,为了提高可读性,您可以使用自动保持同步的数组表单:
我的方法就像 rcollyer ,但更通用,处理优先级并使用更多代码 .
我的解决方案是一个班轮:
其中
sed
用换行符替换:
,sort
和uniq
删除任何重复项,awk
重建路径 . 这样做的缺点是订单不能维护,因此如果您希望某个位置的程序优先于其他位置的程序,则会导致问题 . 我没有实现它,但我想你可以使用perl按顺序维护这些,同时剥离重复项 .这是我长期以来一直使用的:我向.bash_profile或.bashrc添加了一个名为addpath()的函数,然后我可以在路径中添加一个目录,知道不会有重复 . 例如:
这是addpath()的源代码:
从我的.bashrc:
请注意,这会将目录添加到路径的末尾;做出明显的改变,将它们添加到开头 .