Linux的從頭開始有這個function in /etc/profile
# Functions to help us manage paths. Second argument is the name of the
# path variable to be modified (default: PATH)
pathremove() {
local IFS=':'
local NEWPATH
local DIR
local PATHVARIABLE=${2:-PATH}
for DIR in ${!PATHVARIABLE} ; do
if [ "$DIR" != "$1" ] ; then
NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
fi
done
export $PATHVARIABLE="$NEWPATH"
}
這是爲了與這些功能用於添加到路徑,讓你不這樣做冗餘:
pathprepend() {
pathremove $1 $2
local PATHVARIABLE=${2:-PATH}
export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}"
}
pathappend() {
pathremove $1 $2
local PATHVARIABLE=${2:-PATH}
export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1"
}
簡單用法是給pathremove
刪除目錄路徑 - 但請記住它必須完全匹配:
$ pathremove /home/username/anaconda3/bin
這將從您的路徑中刪除該目錄的每個實例。
如果您想要路徑中的目錄,但沒有冗餘,您可以使用其他功能之一,例如, - 爲您的具體情況:
$ pathprepend /usr/local/sbin
$ pathappend /usr/local/bin
$ pathappend /usr/sbin
$ pathappend /usr/bin
$ pathappend /sbin
$ pathappend /bin
$ pathappend /usr/games
但是,除非可讀性的關注,在這一點上,你最好只是在做:
$ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
哪兒去定義它的6倍?在哪些文件? – hovanessyan 2012-07-25 14:06:12
可能重複[在Bash中從$ PATH變量中刪除路徑的最優雅方式是什麼?](http://stackoverflow.com/questions/370047/what-is-the-most-elegant-way-to -remove-a-path-from-the-path-variable-in-bash) – 2014-10-17 12:30:32