Вопрос Как добавить каталог в PATH?


Как добавить каталог в $PATH в Ubuntu и сделать изменения постоянными?


627
2017-07-22 20:42


происхождения


help.ubuntu.com/community/EnvironmentVariables Есть все, что вам нужно знать. Я узнал, что много ввода здесь было неправильным или, по крайней мере, метод не предлагался. Это отличная информация, которая позволит вам выяснить, где изменить переменную среды, исходя из причины, по которой вы это делаете, и как это сделать, не забивая все (как, например, я сделал некоторые из вышеупомянутых плохих советов). Так долго и спасибо за все рыбы! - Bus42


ответы:


Использование ~ / .profile для установки $ PATH

Путь, установленный в .bash_profile будет установлен только в bash login shell (bash -l). Если вы поместите свой путь в .profile он будет доступен для вашего полного рабочего стола. Это означает, что даже metacity будет использовать его.

Например ~/.profile:

if [ -d "$HOME/bin" ] ; then
  PATH="$PATH:$HOME/bin"
fi

Btw, вы можете проверить переменную PATH процесса, посмотрев на ее среду в /proc/[pid]/environ (замените [pid] на число из ps axf). Например. использование grep -z "^PATH" /proc/[pid]/environ

Заметка:

bash поскольку оболочка входа не анализирует .profile если .bash_profile или .bash_login существует. Из man bash :

он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile, в этом   порядок, чтение и выполнение команд из первого, который существует   и читается.

См. ответы ниже для получения информации о .pam_environment, или .bashrc для интерактивных недействительных оболочек или установить значение глобально для всех пользователей, поставив скрипт в /etc/profile.d/ или использовать /etc/X11/Xsession.d/ чтобы повлиять на сеанс диспетчера дисплеев.


397
2017-07-22 22:04



Круто, что сработало. Я видел, где он будет автоматически добавлять bin dir, если я его сделаю, поэтому я просто использовал это вместо скриптов. TY. - justingrif
На Xbunutu .profile не выполняется, поэтому я помещаю его в .bashrc, и он работает. - tekumara
Эта документация очень хорошо сделана: Официальная документация об переменной окружения, Подумайте о том, чтобы прочитать его (не сказать, что он обновлен до последней версии правил для добавления значений в переменную среды). - Michele
Где в .profile мы добавляем путь? - Vineet Kaushik
Я до сих пор не знаю, куда добавить дополнительную часть пути. Мне нужно добавить SDK для Android на мой путь ... PATH="$HOME/bin:$PATH" Поэтому я добавляю его к этому? - Jamie Hutber


редактировать .bashrc в вашем домашнем каталоге и добавьте следующую строку:

export PATH="/path/to/dir:$PATH"

Вам нужно будет .bashrc или выйти / войти (или перезапустить терминал), чтобы изменения вступили в силу. Чтобы .bashrc, просто введите

$ source ~/.bashrc

256
2017-07-22 20:45



Как вы " .bashrc«Как вы« перезапускаете терминал »? - isomorphismes
В bash это просто ». .bashrc» - Ophidian
Я делал предположение, что вы были в своем домашнем каталоге. потому что именно там .Bashrc вы хотите редактировать. - Ophidian
.bashrc не является подходящим местом для установки переменных окружения. Они должны .profile или .pam_environment, Видеть mywiki.wooledge.org/DotFiles - geirha
@LaoTzu . .bashrc не .bashrc :) или source .bashrc в этом отношении - Znarkus


Рекомендуемое место для определения постоянных, общесистемного переменные среды, применяемые ко всем пользователям, находятся в:

/etc/environment

(где используется значение по умолчанию PATH определено)

Это будет работать на рабочем столе или консоли, gnome-terminal или TTY, дождь или блеск;)

  • Чтобы изменить, нажмите Alt+F2 и введите:

    gksudo gedit /etc/environment
    

    (или откройте файл, используя sudo в вашем любимом текстовом редакторе)

Чтобы произвести изменения, выполните . /etc/environment, Поскольку этот файл представляет собой просто простой скрипт, он будет запускаться и назначать новый путь к PATH переменная среды. Чтобы проверить run env и посмотреть PATH значение в листинге.

Связанный:


101
2017-07-31 03:49



а затем вам нужно перезагрузить, чтобы изменения вступили в силу ... - Lee
Это именно то, что мне нужно. Предоставление визуального изображения vm через vagrant и необходимость добавления узла и npm в путь. - Austin Pray
Внести изменения в действие. / etc / environement (да, точка, пробел и / etc / environment). Поскольку этот файл представляет собой простой скрипт, он будет запускаться и назначать новый путь к переменной среды PATH. Чтобы проверить запуск env и увидеть значение PATH в списке. - WindRider
Мне нужно было бежать source /etc/environment перезагрузить изменения - JohnnyAW


Я думаю, что канонический путь в Ubuntu:

  • создать новый файл под /etc/profile.d/

    sudo vi /etc/profile.d/SCRIPT_NAME.sh
    
  • добавить туда:

    export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
    
  • и дать ему разрешение на выполнение

    sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
    

54
2018-01-09 01:31



Обычно безопаснее добавлять свой собственный путь в конец PATH вместо начала. Это позволяет избежать случайной замены системных команд вашими программами (или чужими вредоносными программами). Это также позволяет избежать много путаницы, когда кто-то другой работает в вашей системе (или дает вам совет), и они получают неожиданные результаты от команд, которые вы «заменили». - Joe


Для полных новичков (например, я), которые более удобны с графическим интерфейсом:

  1. Откройте свой $HOME папка.
  2. Идти к Посмотреть → Показать скрытые файлы или нажмите Ctrl + ЧАС,
  3. Щелкните правой кнопкой мыши .profile и нажмите Открыть с помощью текстового редактора,
  4. Прокрутите вниз и добавьте PATH="$PATH:/my/path/foo",
  5. Сохранить.
  6. Выйдите из системы и войдите в систему, чтобы применить изменения (пусть Ubuntu фактически загружает .profile).

44
2017-10-24 22:05



Редактирование файла .profile больше не рекомендуется. Вы можете использовать этот метод для редактирования файла .pam_environment: help.ubuntu.com/community/EnvironmentVariables - PulsarBlow
Спасибо @PulsarBlow! Я не совсем уверен, что именно разница и преимущество, хотя ... Это прямой URL-адрес соответствующего раздела: help.ubuntu.com/community/... - dain
Этот ответ заставил мою систему прекратить вход в систему из-за переопределения всех путей. Использование Ubuntu 16.04. - Frisbetarian
@Frisbetarian, вы должны обязательно добавить $PATH: бит, который включает в себя существующее определение PATH - dain
@dain: ваш комментарий спас мне жизнь! - Py-ser


Для постоянных переменных среды, доступных только для определенных пользователей. Я очень рекомендую официальную документацию Ubuntu.

https://help.ubuntu.com/community/EnvironmentVariables

Ссылаясь на приведенную выше документацию, я настроил свой Путь к инструментам Android SDK от:

  1. создание ~/.pam_environment файл в домашнем каталоге.
  2. содержание которых PATH DEFAULT=${PATH}:~/android-sdk-linux/tools,
  3. дополнительный пользовательский путь пользователя может быть добавлен путем разделения путей с помощью двоеточие (:),
  4. это требует повторного входа в систему, что означает, что вам необходимо выйти из системы и вернуться в рабочий стол.

40
2017-12-08 23:07



Это лучший ответ. - Paulo Coghi


Поместите эту строку в свою ~/.bashrc файл.

Он получает источник, когда вы открываете терминал

РЕДАКТИРОВАТЬ: На основании приведенных ниже комментариев, для более общей настройки, которая будет применяться ко всем оболочкам (в том числе, когда вы нажмете Alt-F2 в Unity), добавьте строку в свою ~/.profile файл. Наверное, не следует делать и то и другое, поскольку путь будет добавлен дважды к вашему PATH если вы открываете терминал.


25
2017-07-31 01:08



На самом деле, я думал, что вы установили путь в $HOME/.profile для личных настроек или /etc/profile для всех пользователей. Но если это необходимо только для bash, я полагаю, что либо сработает. - Marty Fried
Если вы установите его в ~/.bashrc, он будет доступен только в терминалах, которые вы открываете. Например. если вы нажмете Alt + F2 и попробуйте запустить команду из этого каталога, он не найдет его. Если вы установите его в ~/.profile или ~/.pam_environment, сеанс gnome (или какой бы DE вы не использовали) наследует его. Добавление PATH в ~/.bashrc также имеет тот недостаток, что если вы открываете / exec bash интерактивно из другой интерактивной оболочки bash, она будет добавляться несколько раз. - geirha
Я на самом деле не смотрел на это некоторое время, поэтому я сделал поиск, и кажется, что существует по меньшей мере 95 способов установить путь, большинство из которых обсуждаются Вот, Я никогда не выяснял, какой из них лучше. я думаю ~/.profile верно для личных путей; вот где Ubuntu добавляет ~/bin каталог. И я признаюсь, что немного преувеличил количество способов - немного. - Marty Fried
@MartyFried, да, процитировать бота в #bash на freenode: «Подавляющее большинство сценариев bash, кода, учебников и руководств в Интернете - это дерьмо. Осетровый был оптимистом ». Используя Google для проблемы с bash, вы часто найдете много полуработающих решений, прежде чем найти хороший. О, и я бы пошел с ~/.profile в этом случае тоже. - geirha
@geirha - Я согласен с тем, что большинство гидов в Интернете в целом, вероятно, дерьмо, особенно что-то вроде linux, поскольку разные дистрибутивы или даже разные версии одного и того же, делают что-то по-другому. Обычно это сводится к тому, что работает, но большинство людей не понимает, что то, что работает, - это просто то, что работает, не обязательно то, что правильно или даже то, что всегда будет работать. Я пытаюсь выяснить, какой из многих способов на самом деле правильный, потому что я ненавижу делать что-то не один раз, но это не всегда легко. :) - Marty Fried


Чтобы установить его по всей системе, добавьте строку export PATH=/path/you're/adding:$PATH до конца /etc/profile,

Чтобы добавить каталог только для входа в систему, добавьте одну строку к ~/.bash_profile,


15
2017-07-22 23:20