如何使用终端命令从系统路径(`$PATH`)中删除路径?

Avi*_*Raj 14 command-line

$PATH通过运行向系统路径()添加了一个目录路径,

export PATH=$PATH:/home/avinash/Desktop/raj
Run Code Online (Sandbox Code Playgroud)

现在我的路径看起来像这样,

$回声 $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games :/家/avinash/桌面/raj

我想/home/avinash/Desktop/raj通过使用命令从系统路径变量中删除(就像 export 命令在添加路径时所做的那样)。

Rad*_*anu 20

在您当前的 shell(您当前的 gnome-terminal 会话)中,您可以使用以下命令执行此操作:

export PATH=${PATH%:/home/avinash/Desktop/raj}
Run Code Online (Sandbox Code Playgroud)

一般来说:

${string%substring}
Run Code Online (Sandbox Code Playgroud)

$substring从 的后面删除最短的匹配项$string

查看字符串操作以获取更多信息。


Oli*_*Oli 15

运行export PATH=$PATH:/...不会在PATH系统范围内设置。它只是一个shell变量。启动一个新的 shell 和BOOM,它不见了。显然,如果您已将其添加到~/.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
Run Code Online (Sandbox Code Playgroud)


sou*_* c. 6

如果您将该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
Run Code Online (Sandbox Code Playgroud)

它将从路径中删除该文件夹。

如果您已从终端导出路径

只要您在该 shell 中,该文件夹就会位于路径中。要覆盖路径,您必须分配新路径。正如奥利在另一个答案中已经提到的那样。

您可以使用以下命令设置旧路径

export PATH=`echo ${PATH/\:\/home\/avinash\/Desktop\/raj/}`
Run Code Online (Sandbox Code Playgroud)

或者,简单地说

export PATH=${PATH/':/home/avinash/Desktop/raj'/}
Run Code Online (Sandbox Code Playgroud)

这是子字符串替换,

${string/substring/replacement}
Run Code Online (Sandbox Code Playgroud)