Как мне изменить мой PATH, чтобы изменения были доступны в каждом сеансе терминала

53

Я хочу добавить каталог для поиска моего пути поиска. Я знаю, что должен изменить PATHпеременную среды. Однако я хочу, чтобы изменение было постоянным, чтобы оно действовало всегда для каждого открываемого мной окна терминала (bash).

В https://help.ubuntu.com/community/EnvironmentVariables есть много запутанной и, возможно, противоречивой информации.

Я использую Ubuntu 10.04. Предположим, я хочу добавить /usr/local/fooв мой PATH. Какой файл ( .bashrc, .profile, .bash_loginи т.д. ...) я должен изменить , и что должно новая линия (ы) выглядеть?

Джошуа Фланаган
источник

Ответы:

70

Следующая команда добавляет путь к вашему текущему пути:

export PATH=$PATH:/my/custom/path

Если вы хотите, чтобы ваша установка выполняла эту команду каждый раз, есть ряд мест, где вы можете ее разместить. При входе в систему будут выполняться следующие сценарии в следующем порядке:

/etc/profile      (which starts by loading everything in /etc/profile.d)
~/.profile        (which starts by loading ~/.bashrc if you are running bash)

Примечания

  • ~/.profile загружается только если ~/.bash_profileи ~/.bash_loginне существует. В противном случае, по крайней мере, Bash, будет загружать их вместо. Желательно использовать .profileи не специфичные для bash скрипты. Так что, если в этих попытках вы создали .bash_login, пожалуйста, удалите его сейчас.

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

  • ~/.bashrcзагружается снова и снова, каждый раз , когда вы открываете новый терминал . Итак, новая вкладка в gnome-terminal, новый виртуальный терминал и т. Д. Таким образом, даже если вы не авторизуетесь снова, .bashrcон загружается (и таким образом сбрасывает свою среду) каждый раз, когда вы открываете новую оболочку.

  • Такие вещи, как Бёбу, действительно должны войти .profile, (иначе это не сработает ;-)

  • Такие вещи, как пути, должны идти, .profileесли вы хотите, чтобы они работали вне интерактивных сеансов. (скажем, когда вы нажимаете Alt+ F2в GNOME)

Ralf
источник
Я отмечу это как ответ, если вы обновите его, чтобы включить запрошенную строку экспорта, которая должна быть добавлена ​​в .profile.
Джошуа Фланаган
Раньше это действовало только для консольных входов в систему (например, ssh или виртуальных терминалов, доступных для Ctrl + Alt + Fx). Я не знал, что источники / etc / gdm / Xsession ~ / .profile в эти дни. Ухоженная!
Мариус Гедминас
Да, я не упомянул конкретно / etc / gdm / Xsession или ~ / .Xprofile, потому что есть лучшие способы запуска графических программ при запуске, что гарантирует, что остальная среда уже загружена.
Ральф
1
чтобы сделать этот ответ более полным, пожалуйста, добавьте комментарий Мэтта о поиске ~ / .profile для активации изменений без цикла выхода из системы.
Мэтт Вилки
1
@schwiz: ~/.profileвыполняется не на каждом терминале, а до того, как начнется сеанс рабочего стола. То, что выполняется на каждом терминале,~/.bashrc
MestreLion
13

Я получил его на работу, изменив ~/.profile

Похоже, добавление ~ / bin к моему пути было плохим примером, так как в ~ / .profile уже есть код, который делает это автоматически, если каталог существует.

Чтобы добавить каталог usr / local / foo в мой путь для каждой последующей сессии, я добавляю / редактирую следующую строку в конце моего .profile:

export PATH=$PATH:/usr/local/foo

Однако, чтобы это вступило в силу, мне нужно было выйти и снова войти в систему (простое закрытие окна терминала и открытие нового НЕ работало).

Джошуа Фланаган
источник
4
Сделайте это export PATH="$PATH:/usr/foo", если у вас когда-нибудь будут пробелы или другие специальные символы $PATH.
Жиль "ТАК - перестать быть злым"
3
Вы можете перезагрузить текущую среду без выхода из системы, набрав «. ~ / .Profile»
Matt H
1
@MattH: нет, ты не можешь. если вы источник ~/.profileв данном терминале, она будет эффективной для этого терминала только
MestreLion
@MestreLion - вы правы. Я упоминал об этом для удобства текущего терминала. Забыл добавить это.
Мэтт Х
Что если у меня уже есть что-то в PATH? Могу ли я добавить к нему, как PATHS работает в Windows? Например у меня PATH="$HOME/bin:$HOME/.local/bin:$PATH"уже есть .
Ярмарка Гавриила
4

Чтобы перезагрузить .profile и применить изменения без выхода из системы / входа, запустите:

source ~/.profile
Бруно Фрейтас
источник
это должен быть комментарий к предыдущему ответу
Павел Жуков
3

Вы можете добавить путь /etc/environment, но помните, что никакие расширения оболочки не будут работать; переменная будет установлена ​​буквально на символы, которые вы вводите.

sagarchalise
источник
Какой из двух методов (добавление команды экспорта в .profile и добавление полного пути к PATH в etc / environment) какой из них предпочтительнее?
Рохан Бхатия
2

Вы можете изменить .bashrcфайл в вашем $HOMEкаталоге.

В самом конце этого файла добавьте строку:

export PATH="$HOME/directory_to_include_in_path/:$PATH"

Вы также можете изменить .profileфайл, также в вашем $HOMEкаталоге, включая следующую строку:

PATH="$HOME/directory_to_include_in_path/:$PATH"

Это сработало для меня.

Деннер Виейра
источник
2
Я не вижу, что это добавляет к другим ответам, которые объясняют более подробно.
Занна
Это правильный ответ, если вы хотите, чтобы изменения влияли на окна терминала. Изменение .profileне влияет на окна терминала.
Маркус Лайр
0

Если у вас есть ohmyzsh, перейдите в свой домашний каталог через терминал и введите

nano .zshrc

В конце файла введите

export PATH = "$ HOME / directory_to_include_in_path /: $ PATH"

Наконец перезапустите свой терминал. Работал на меня. Надеюсь, это было полезно.

Vallie
источник
-3
Going through the basics, I will suggest the following steps:
1. It's recommended to set environment variables in /etc/environment
2. Open the file as superuser in an editor as it's a read only file e.g.     gedit:
gksu gedit /etc/environment
3. System will need password to open it in editable mode. Enter your superuser password and get file opened in a new gedit window. 
4. Add new line at the end of file with 
export PATH=$PATH:/usr/local/foo
5. Save and close the window. It will get command back to terminal.
6. Refresh the environment by running the following command: 
. /etc/environment
7. You may check by executing the following command:
 echo $PATH
макинтош
источник
Это неверно и не будет работать. Расширение параметра не выполняется в/etc/environment
Zanna