从 PATH 变量中删除重复条目

Chr*_*oms 10 shell bash bashrc path

我经常修改我的 .bashrc 然后获取它。但是,当export PATH="~/bin:~/perl5/bin:$PATH"我的文件中有类似内容 时,PATH每次获取文件时环境变量都会增加。

例如,第一次获取 .bashrc 时,PATH变量由.bashrc组成~/bin:~/perl5/bin:/usr/bin:/bin

第二次它由~/bin:~/perl5/bin:~/bin:~/perl5/bin:/usr/bin:/bin.

第三次它由~/bin:~/perl5/bin:~/bin:~/perl5/bin:~/bin:~/perl5/bin:/usr/bin:/bin.

有没有一种简单的方法可以让它只添加任何不在 PATH 中的东西?

Sam*_*cke 12

使用大多数发行版中可用的 pathmunge() 函数/etc/profile

pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
   if [ "$2" = "after" ] ; then
      PATH=$PATH:$1
   else
      PATH=$1:$PATH
   fi
fi
}
Run Code Online (Sandbox Code Playgroud)

编辑:对于zsh用户,typeset -U <variable_name>将删除重复的路径条目。