$PATH
我通过运行将目录路径添加到系统路径( ),
export PATH=$PATH:/home/avinash/Desktop/raj
现在我的路径是这样的,
$ 回显 $PATH /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/avinash/Desktop/raj
我想/home/avinash/Desktop/raj
使用命令从系统路径变量中删除(就像导出命令在添加路径时所做的那样)。
答案1
在您当前的 shell 中(您当前的 gnome-terminal 会话),您可以使用以下命令执行此操作:
export PATH=${PATH%:/home/avinash/Desktop/raj}
一般来说:
${string%substring}
$substring
删除来自的最短匹配后退的$string
。
查看字符串操作了解更多信息。
答案2
运行export PATH=$PATH:/...
不会设置PATH
整个系统。它只是一个 shell 变量。启动一个新的 shell 并繁荣,它就消失了。显然,如果您已将其添加到~/.bashrc
(或另一个环境引导文件),则必须撤消该更改,但这听起来不像是您的问题。
如果你不想启动新的 shell,可以通过手动删除它来设置它,方法是:
export PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
答案3
如果你将export
语句放在任何 shell 启动文件中,例如~/.bashrc
,你可以在终端中使用以下命令,
#remove the export statement from the file.
sed -i 's#export PATH=$PATH:/home/avinash/Desktop/raj##g' ~/.bashrc
#source ~/.bashrc
. ~/.bashrc
它将从路径中删除该文件夹。
如果你已经从终端导出路径
只要您处于该 shell 中,文件夹就会位于路径中。要覆盖路径,您必须指定新路径。正如 oli 在另一个答案中提到的那样。
您可以使用以下命令设置旧路径
export PATH=`echo ${PATH/\:\/home\/avinash\/Desktop\/raj/}`
或者简单地
export PATH=${PATH/':/home/avinash/Desktop/raj'/}
这是子字符串替换,
${string/substring/replacement}
答案4
一个肮脏的黑客是
export PATH="$( echo $PATH| tr : '\n' |grep -v raj | paste -s -d: )"
- 使用以下行分隔 PATH 中的每个目录
tr
- 使用 删除不需要的内容(与“raj”匹配的路径
grep -v
) - 使用 折叠回长“:”分隔的字符串
paste
。
:
如果 PATH 中的任何目录有或新行,则此方法可能无法正常工作
如果你发现自己经常这样做,可以考虑将其作为一个函数并保存在你的 shell 配置文件中(例如.bashrc
,.zshrc
)
# use like: rminpath "raj"
rminpath(){ export PATH="$( echo $PATH| tr : '\n' |grep -v "$1" | paste -sd: )"; }