Bash
Управление переменной среды PATH
Поиск…
Синтаксис
- Добавить путь: PATH = $ PATH: / new / path
- Добавить путь: PATH = / новый / путь: $ PATH
параметры
параметр | подробности |
---|---|
ДОРОЖКА | Переменная окружения |
замечания
Файл конфигурации Bash:
Этот файл создается каждый раз, когда запускается новая интерактивная оболочка Bash.
В системах GNU / Linux это обычно файл ~ / .bashrc; в Mac это ~ / .bash_profile или ~ / .profile
Экспорт:
Переменная PATH должна быть экспортирована один раз (это делается по умолчанию). После его экспорта он будет экспортирован и любые внесенные в него изменения будут немедленно применены.
Применять изменения:
Чтобы применить изменения к файлу конфигурации Bash, вы должны перезагрузить этот файл в терминале ( source /path/to/bash_config_file
)
Добавить путь к переменной среды PATH
Переменная среды PATH обычно определяется в ~ / .bashrc или ~ / .bash_profile или / etc / profile или ~ / .profile или /etc/bash.bashrc (файл конфигурации Bash для дистрибутива)
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/jdk1.8.0_92/bin:/usr/lib/jvm/jdk1.8.0_92/db/bin:/usr/lib/jvm/jdk1.8.0_92/jre/bin
Теперь, если мы хотим добавить путь (например, ~/bin
) к переменной PATH:
PATH=~/bin:$PATH
# or
PATH=$PATH:~/bin
Но это изменит PATH только в текущей оболочке (и ее подоболочке). Как только вы выйдете из оболочки, эта модификация исчезнет.
Чтобы сделать его постоянным, нам нужно добавить этот бит кода в файл ~ / .bashrc (или любой другой) и перезагрузить файл.
Если вы запустите следующий код (в терминале), он добавит ~/bin
в PATH навсегда:
echo 'PATH=~/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
Объяснение:
-
echo 'PATH=~/bin:$PATH' >> ~/.bashrc
добавляет строкуPATH=~/bin:$PATH
в конце файла ~ / .bashrc (вы можете сделать это с помощью текстового редактора) -
source ~/.bashrc
перезагружает файл ~ / .bashrc
Это немного кода (запускается в терминале), который проверяет, включен ли путь и добавляет путь, только если нет:
path=~/bin # path to be included
bashrc=~/.bashrc # bash file to be written and reloaded
# run the following code unmodified
echo $PATH | grep -q "\(^\|:\)$path\(:\|/\{0,1\}$\)" || echo "PATH=\$PATH:$path" >> "$bashrc"; source "$bashrc"
Удалить путь из переменной среды PATH
Чтобы удалить PATH из переменной среды PATH, вам необходимо отредактировать файл ~ / .bashrc или ~ / .bash_profile или / etc / profile или ~ / .profile или /etc/bash.bashrc (файл с дистрибутивом) и удалить назначение для этот конкретный путь.
Вместо того, чтобы находить точное задание, вы можете просто сделать замену в $PATH
на своем последнем этапе.
Следующее безопасно удалит $path
из $PATH
:
path=~/bin
PATH="$(echo "$PATH" |sed -e "s#\(^\|:\)$(echo "$path" |sed -e 's/[^^]/[&]/g' -e 's/\^/\\^/g')\(:\|/\{0,1\}$\)#\1\2#" -e 's#:\+#:#g' -e 's#^:\|:$##g')"
Чтобы сделать его постоянным, вам нужно добавить его в конец вашего конфигурационного файла bash.
Вы можете сделать это функционально:
rpath(){
for path in "$@";do
PATH="$(echo "$PATH" |sed -e "s#\(^\|:\)$(echo "$path" |sed -e 's/[^^]/[&]/g' -e 's/\^/\\^/g')\(:\|/\{0,1\}$\)#\1\2#" -e 's#:\+#:#g' -e 's#^:\|:$##g')"
done
echo "$PATH"
}
PATH="$(rpath ~/bin /usr/local/sbin /usr/local/bin)"
PATH="$(rpath /usr/games)"
# etc ...
Это упростит обработку нескольких путей.
Заметки:
- Вам нужно будет добавить эти коды в конфигурационный файл Bash (~ / .bashrc или что-то еще).
- Запустите
source ~/.bashrc
чтобы перезагрузить файл конфигурации Bash (~ / .bashrc).