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


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


617
2017-07-22 20:42


Источник




Ответы:


Использование ~ / .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/ чтобы повлиять на сеанс диспетчера дисплеев.


393
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

254
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 значение в листинге.

Связанный:


100
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
    

53
2018-01-09 01:31



Обычно безопаснее добавлять свой собственный путь в конец PATH вместо начала. Это позволяет избежать случайной замены системных команд вашими программами (или чужими вредоносными программами). Это также позволяет избежать много путаницы, когда кто-то другой работает в вашей системе (или дает вам совет), и они получают неожиданные результаты от команд, которые вы «заменили». - Joe
Правильный способ добавления / добавления к $PATH видеть askubuntu.com/a/992666/226614 - sancho.s


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

  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. это требует повторного входа в систему, что означает, что вам необходимо выйти из системы и вернуться в рабочий стол.

39
2017-12-08 23:07



Это лучший ответ. - Paulo Coghi
Правильный способ добавления / добавления к $PATH видеть askubuntu.com/a/992666/226614 - sancho.s


Поместите эту строку в свою ~/.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