Прості речі
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), але ви навряд чи зустрінетесь із такими старими снарядами в наші дні.