从 PATH 中删除添加的路径?

从 PATH 中删除添加的路径?

在我的~/.bashrcLinux 中,我有一行添加了一些路径PATH,例如:

PATH=~/mydoc:~/mypython:"$PATH"

添加的目的~/mypython是使用我自己安装的python,而不是系统默认的。但现在我想改回使用系统默认的python。在不注销的情况下,是否有一种简单的方法可以~/mypython从 的值中删除PATH

答案1

PATH=$(tr ":" "\n" <<<"$PATH" | grep -Fxv "$HOME/mypython" | paste -sd:)

答案2

您可以在 shell 中更新路径:

TRIM=~/mypython
export PATH=$(echo "$PATH" | sed -e "s,:$TRIM:,:," -e "s,:$TRIM\$,," -e "s,^$TRIM:,," )

这比您的具体情况更普遍。这可以用

TRIM=~/mypython
export PATH=$(echo "$PATH" | sed -e "s,:$TRIM:,:," )

我使用一个临时变量TRIM来存储波浪号扩展值,~/mypython因为它不会在sed命令中扩展。我也做了不是使用是$HOME因为(虽然通常是相同的)它不能保证与~(波浪号) 的扩展具有相同的值。您可以HOME根据需要设置与实际主目录不同的目录(通常不是好东西当然要做)。

为了我自己的使用,我使用一个实用程序newpath,例如,

export PATH=$(newpath -r ~/mypython)

答案3

这是一个删除 PATH 组件的函数,我认为它可以处理所有边缘情况。 (即使是那些带有空组件的邪恶的。)

remove_from_PATH () {
  while case $PATH in
          "$1") unset PATH; false;;
          "$1:"*) PATH=${PATH#"$1:"};;
          *":$1") PATH=${PATH%":$1"};;
          *":$1:"*) PATH=${PATH%%":$1:"*}:${PATH#*":$1:"};;
          *) false;;
        esac
  do
    :
  done
}

remove_from_PATH ~/mypython

在zsh中,使用数组更容易path

path=("${(@)path:#"$HOME/mypython"}")

注意你不应该PATH修改.bashrc

答案4

我会更改你的 .bashrc 然后执行以下命令:

 . .bashrc

这会将您的 .bashrc 内容放入您当前的环境中。

相关内容