在我的~/.bashrc
Linux 中,我有一行添加了一些路径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"}")
答案4
我会更改你的 .bashrc 然后执行以下命令:
. .bashrc
这会将您的 .bashrc 内容放入您当前的环境中。