Прості речі
PATH=$PATH:~/opt/bin
або
PATH=~/opt/bin:$PATH
залежно від того, ви хочете додати ~/opt/bin
в кінці (для пошуку за всіма іншими каталогами, якщо є програма з тим самим іменем у кількох каталогах) або на початку (для пошуку перед усіма іншими каталогами).
Ви можете одночасно додати кілька записів. PATH=$PATH:~/opt/bin:~/opt/node/bin
або варіації замовлення працюють просто чудово. Не ставте export
на початку рядка, оскільки це має додаткові ускладнення (див. Нижче "Примітки до снарядів, окрім удару").
Якщо ваші PATH
побудовані багатьма різними компонентами, у вас можуть з’явитися повторювані записи. Див. Як додати шлях до домашнього каталогу для виявлення Unix, яка команда? та видаліть повторювані записи $ PATH командою awk, щоб уникнути додавання дублікатів або видалення їх.
Деякі дистрибутиви ~/bin
, до речі, автоматично поміщаються у ваш PATH, якщо він існує.
Куди його поставити
Помістіть лінію , щоб змінити PATH
в ~/.profile
, або , ~/.bash_profile
якщо це те, що у вас є.
Зауважте, що ~/.bash_rc
не читається жодною програмою і ~/.bashrc
є файлом конфігурації інтерактивних екземплярів bash. Не слід визначати змінні середовища у ~/.bashrc
. Правильне місце для визначення змінних оточуючих середовищ, таких як PATH
є ~/.profile
(або ~/.bash_profile
якщо ви не дбаєте про оболонки, окрім bash). Див. Яка різниця між ними та яку я повинен використовувати?
Не вкладайте його /etc/environment
або ~/.pam_environment
: це не оболонки, ви не можете використовувати заміни, як $PATH
там. У цих файлах ви можете лише замінити змінну, а не додати її.
Потенційні ускладнення в деяких системних сценаріях
Вам не потрібно, export
якщо змінна вже знаходиться в оточенні: будь-яка зміна значення змінної відображається в PATH
оточенні. всі системи Unix встановлюють це дуже рано (як правило, саме в першому процесі).
Під час входу ви можете розраховувати на PATH
те, що вже знаходитесь в оточенні та вже містять деякі системні каталоги. Якщо ви пишете сценарій , який може бути виконаний в початку при установці якої - то віртуальному середовищі, необхідно переконатися , що PATH
не є порожнім і експортується: якщо PATH
до сих пір НЕ встановлено, то що - щось на зразок PATH=$PATH:/some/directory
б встановлений PATH
на :/some/directory
, а порожній компонент на початку означає поточний каталог (як .:/some/directory
).
if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin; fi
Примітки до снарядів, окрім бош
У bash, ksh і zsh, export
це спеціальний синтаксис, і обидва, PATH=~/opt/bin:$PATH
і export PATH=~/opt/bin:$PATH
роблять правильно все рівно. В інших оболонках стилю Bourne / POSIX, таких як тире (який є /bin/sh
у багатьох системах), export
аналізується як звичайна команда, що передбачає дві відмінності:
Отже, в оболонках, як тире, export PATH=~/opt/bin:$PATH
встановлюється PATH
буквальний рядок з ~/opt/bin/:
наступним значенням PATH
до першого пробілу.
PATH=~/opt/bin:$PATH
(голе завдання) не вимагає цитат і робить все правильно. Якщо ви хочете використовувати export
в портативному скрипті, вам потрібно написати export PATH="$HOME/opt/bin:$PATH"
, або PATH=~/opt/bin:$PATH; export PATH
(або PATH=$HOME/opt/bin:$PATH; export PATH
для перенесення навіть оболонки Bourne, яка не прийняла export var=value
і не зробила розширення tilde).
¹ Це не було правдою для снарядів Борна (як у власне оболонці Борна, а не сучасних снарядів у стилі POSIX), але ви навряд чи зустрінетесь із такими старими снарядами в наші дні.