Я использую набор вспомогательных функций для добавления или добавления пути к переменной. Функции входят в дистрибутивный пакет для Bash в файле contrib под названием "pathfuncs".
- add_path добавит запись в конец переменной PATH
- pre_path добавит запись в начало переменной PATH
- del_path удалит запись из переменной PATH, где бы она ни находилась
Если вы укажете переменную в качестве второго аргумента, она будет использовать ее вместо PATH.
Для удобства вот они:
# is $1 missing from $2 (or PATH) ?
no_path() {
eval "case :\$${2-PATH}: in *:$1:*) return 1;; *) return 0;; esac"
}
# if $1 exists and is not in path, append it
add_path () {
[ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="\$${2:-PATH}:$1"
}
# if $1 exists and is not in path, prepend it
pre_path () {
[ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="$1:\$${2:-PATH}"
}
# if $1 is in path, remove it
del_path () {
no_path $* || eval ${2:-PATH}=`eval echo :'$'${2:-PATH}: |
sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;"`
}
Если вы добавите их в свой загрузочный файл bash, вы можете добавить их в свой PATH следующим образом:
pre_path $HOME/bin
add_path /sbin
add_path /usr/sbin
Или укажите другую переменную:
pre_path $HOME/man MANPATH
pre_path $HOME/share/man MANPATH
add_path /usr/local/man MANPATH
add_path /usr/share/man MANPATH
Я использую этот метод в моих файлах rc, помещая pre_paths первым и add_paths вторым. Это делает все мои изменения пути легко понятными с первого взгляда. Еще одним преимуществом является то, что строки достаточно короткие, чтобы при необходимости я мог добавить заключительный комментарий к строке.
А поскольку это функции, вы можете использовать их в интерактивном режиме из командной строки, например, добавив add_path $(pwd)
чтобы добавить текущий каталог в путь.