Linux: $ PATH değişkeninden gereksiz yolları kaldırın
Sıfırdan Linux , / etc / profile içinde bu işleve sahiptir.
# 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"
}
Bunun, gereksiz yere yapmamanız için yola ekleme yapmak için bu işlevlerle kullanılması amaçlanmıştır:
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"
}
Basit kullanım, yalnızca pathremove
kaldırılacak dizin yolunu vermektir - ancak bunun tam olarak eşleşmesi gerektiğini unutmayın:
$ pathremove /home/username/anaconda3/bin
Bu, o dizinin her bir örneğini yolunuzdan kaldıracaktır.
Dizini yolunuzda istiyorsanız, ancak fazlalıklar olmadan, diğer işlevlerden birini kullanabilirsiniz, örneğin - özel durumunuz için:
$ pathprepend /usr/local/sbin
$ pathappend /usr/local/bin
$ pathappend /usr/sbin
$ pathappend /usr/bin
$ pathappend /sbin
$ pathappend /bin
$ pathappend /usr/games
Ancak, endişe konusu okunabilirlik değilse, bu noktada şunları yapmanız daha iyi olur:
$ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Yukarıdakiler, insanın bildiği tüm mermilerde çalışır mı?
Ben iş için yukarıdaki tahmin ediyorum sh
, dash
ve bash
en azından. Çalışmadığını öğrenmek beni şaşırtacak csh
, fish', or
ksh`. Windows komut kabuğunda veya Powershell'de çalışacağından şüpheliyim.
Python'unuz varsa, aşağıdaki komut türü doğrudan sorulan şeyi yapmalıdır (yani, gereksiz yolları kaldırın):
$ PATH=$( python -c "
import os
path = os.environ['PATH'].split(':')
print(':'.join(sorted(set(path), key=path.index)))
" )
Tek satırlık (çok satırlı sorunları önlemek için):
$ PATH=$( python -c "import os; path = os.environ['PATH'].split(':'); print(':'.join(sorted(set(path), key=path.index)))" )
Yukarıdakiler daha sonra gereksiz yolları kaldırır. Daha önceki gereksiz yolları kaldırmak için, tersine çevrilmiş bir listenin dizinini kullanın ve yeniden tersine çevirin:
$ PATH=$( python -c "
import os
path = os.environ['PATH'].split(':')[::-1]
print(':'.join(sorted(set(path), key=path.index, reverse=True)))
" )