Как добавить каталог в PATH?

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

17 ответов

Решение

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

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

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

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

Кстати, вы можете проверить переменную 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/ повлиять на дисплей диспетчера сессии.

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

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

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

$ source ~/.bashrc

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

/etc/environment

(где по умолчанию PATH определено)

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

  • Для редактирования нажмите Alt+F2 и введите:

    gksudo gedit /etc/environment
    

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

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

Связанные с:

Я думаю, что канонический путь в 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
    

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

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

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

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

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

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

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

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

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

Добавление его в.bashrc будет работать, но я думаю, что более традиционный способ установки переменных пути - это.bash_profile, добавив следующие строки.

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

Согласно этой теме, похоже, что поведение Ubuntu немного отличается от поведения RedHat и клонов.

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

Чтобы добавить каталог только для вошедшего в систему пользователя, добавьте эту же строку в ~/.bash_profile,

В терминале, cd в the_directory_you_want_to_add_in_the_path

echo "export PATH=$(pwd):\${PATH}" >> ~/.bashrc

Это была не моя идея. Я нашел этот способ экспорта пути в этом блоге здесь.

sudo vi /etc/profile.d/SCRIPT_NAME.sh

добавить туда

export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH

Рекомендуемый способ редактирования вашего PATH из /etc/environment файл

Пример вывода /etc/environment:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Например, чтобы добавить новый путь /home/username/mydir

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/mydir"

Затем перезагрузите компьютер.


Общесистемные переменные среды

Подходящим файлом для настроек переменных среды, которые влияют на систему в целом (а не только на конкретного пользователя), является / etc / environment. Альтернативой является создание файла для этой цели в каталоге /etc/profile.d.

/ и т.д. / окружающая среда

Этот файл специально предназначен для общесистемных настроек переменных среды. Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку.

Примечание. Расширение переменной не работает в / etc / environment.

Более подробную информацию можно найти здесь: EnvironmentVariables

Всякий раз, когда я "устанавливаю" свою папку скриптов BASH, я следую шаблону теста для $HOME/bin папка, которая находится в большинстве файлов.profile в последних версиях Ubuntu. Я установил тест, который выглядит как

if [ -d "/usr/scripts" ]; then
   PATH="/usr/scripts:$PATH"
fi

Это работает примерно в 100% случаев, и я могу свободно менять его в текстовом редакторе с графическим интерфейсом пользователя с помощью быстрого "Заменить все", если я решу переместиться /scripts где-то ближе к моему $HOME папка. Я не делал этого в 6 установках Ubuntu, но "всегда завтра". S

BZT

Откройте свой терминал, введите gedit .profile и вставьте следующее:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$PATH:$HOME/bin"
fi

 #the following line add Bin where you dont have a Bin folder on your $HOME
    PATH="$PATH:/home/mongo/Documents/mongodb-linux-i686-2.2.2/bin"

Закройте и откройте терминал, он должен работать.

Даже если системные скрипты не используют это, в любом из случаев, когда кто-то хочет добавить путь (например, $HOME/bin) к переменной окружения PATH, следует использовать

PATH="${PATH:+${PATH}:}$HOME/bin"

для добавления (вместо PATH="$PATH:$HOME/bin"), а также

PATH="$HOME/bin${PATH:+:${PATH}}"

за предлог (вместо PATH="$HOME/bin:$PATH").

Это позволяет избежать ложного начального / конечного двоеточия, когда $PATH изначально пуст, что может иметь нежелательные последствия.

См. Например, https://unix.stackexchange.com/questions/162891/append-to-path-like-variable-without-creating-leading-colon-if-unset

Поместите это в свой ~/.bashrc или что бы вы ни использовали rc (или вышеупомянутый ~/.profile) А ТАКЖЕ ~/.xsessionrc поэтому он также будет работать в X (внешняя оболочка).

Для Ubuntu отредактируйте ~/.bashrc и добавьте следующую строку.

. ~/.bash_profile

Затем отредактируйте ваш.bash_profile, как вам нужно.....

Другие вопросы по тегам