Как навсегда установить $PATH в Linux / Unix?

Я пытаюсь добавить каталог в свой путь, чтобы он всегда был в моем пути Linux. Я пробовал:

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

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

Как я могу это сделать, чтобы это было установлено навсегда?

20 ответов


вам нужно добавить его в свой ~/.profile или .

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

в зависимости от того, что вы делаете, вы можете хотеть симлинк на файлы:

cd /usr/bin
sudo ln -s /path/to/binary binary-name

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

source ~/.profile 
or
source ~/.bashrc

Я не могу поверить, что никто не упомянул . Единственная цель-хранить переменные среды. Первоначально здесь определена переменная $PATH. Это паста из моего :

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

таким образом, вы можете просто открыть этот файл как root и добавить все, что хотите.

для немедленных результатов, Запустить (попробовать как обычный пользователь!--12-->и root):

source /etc/environment && export PATH

обновление:

если вы используете zsh (a.к. A Z Shell), добавить эта строка сразу после комментариев в /etc/zsh/zshenv:

source /etc/environment

я столкнулся с этой маленькой причудой на Ubuntu 15.10, но если ваш ЗШ не получает правильного путь, это может быть, почему


есть несколько способов сделать это. Реальное решение зависит от цели.

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

системы

  1. /etc/environment список уникальных заданий. Идеально подходит для добавления общесистемных каталогов, таких как /usr/local/something/bin to PATH переменной или определение JAVA_HOME.
  2. /etc/xprofile сценарий оболочки выполняется при запуске сеанса X Window System. Это выполняется для каждого пользователя, который входит в систему X Window. Это хороший выбор для PATH записи, которые действительны для каждого пользователя, как /usr/local/something/bin. Файл включен другим скриптом, поэтому используйте синтаксис оболочки POSIX, а не синтаксис вашей пользовательской оболочки.
  3. /etc/profile и /etc/profile.d/* сценарий оболочки. Это хороший выбор для shell-only систем. Эти файлы читаются только ракушки.
  4. /etc/<shell>.<shell>rc. Сценарий оболочки. Это плохой выбор, потому что он специфичен для одной оболочки.

сеанс пользователя

  1. ~/.pam_environment. Список уникальных заданий. Загружено Пэм в начале каждого сеанса пользователя не имеет значения, если это системный сеанс X Window или оболочка. Вы не можете ссылаться на другую переменную, включая HOME или PATH таким образом, он имеет ограниченное использование.
  2. ~/.xprofile сценарий оболочки. Это выполняется когда пользователь входит в систему X Window System. Переменные, определенные здесь, видны каждому приложению X. Идеальный выбор для расширения PATH со значениями, такими как ~/bin или ~/go/bin или определение конкретного пользователя GOPATH или NPM_HOME. Файл включен другим скриптом, поэтому используйте синтаксис оболочки POSIX, а не синтаксис вашей пользовательской оболочки. Графический текстовый редактор или IDE, запущенный ярлыком, увидит эти значения.
  3. ~/.profile сценарий оболочки. Он будет виден только для программ запускается из терминала или эмулятора терминала. Это хороший выбор для систем shell-only.
  4. ~/.<shell>rc. Сценарий оболочки. Это плохой выбор, потому что он специфичен для одной оболочки.

распространение конкретной документации


поставить export декларация ~/.bashrc. Мой. bashrc содержит следующее:

export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH

вы можете установить $PATH постоянно в 2 стороны.

  1. настроить путь для конкретного пользователя : Возможно, Вам потребуется сделать запись в .bash_profile в домашнем каталоге пользователя.

    e.g в моем случае я установлю путь java в профиле пользователя tomcat

    [tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile
    
  2. установить общий путь для всех пользователей системы, вам может потребоваться указать путь такой :

    [root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile
    

вы можете использовать на Centos или RHEL для локального пользователя:

echo $"export PATH=$PATH:$(pwd)" >> ~/.bash_profile

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

если вы не хотите делать повторный вход в систему, то можете использовать:

source ~/.bash_profile

этого перезагрузить # User specific environment and startup programs этот комментарий присутствует .bash_profile


Я думаю, что самый элегантный способ это:

1.добавить в ~/.файл bashrc Выполните эту команду

gedit ~/.bashrc и

добавьте свой путь внутри его

экспорт PATH=$PATH:/opt/node / bin

2.источник./~ bashrc и

(Ubuntu)


вы можете добавить эту строку в файл конфигурации консоли (например .bashrc и) , или .профиль


я наткнулся на этот вопрос вчера при поиске способа добавить папку, содержащую мои собственные скрипты, в путь - и был удивлен, узнав, что мой собственный ~/.profile файл (на Linux Mint 18.1) уже содержал это:

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

таким образом, все, что мне нужно было сделать, это создать папку ~/bin и поставить там свои скрипты.


вы также можете установить постоянно, редактируя один из этих файлов:

/etc/profile (для всех пользователей)

~/.bash_profile (для текущего пользователя)

~/.bash_login (для текущего пользователя)

~/.profile (для текущего пользователя)

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

извлеченные из: http://www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html


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

Если вы находитесь в режиме входа в систему, файлы, которые вы ищете, - это /etc /bash или/etc / bash.bashrc и

Если вы находитесь в режиме без входа в систему, вы ищете файл /.профиль или для файлов в каталоге /.профили.d

файлы, упомянутые выше, если где системные переменные.


Zues77 имеет правильную идею. ОП не сказал:"как я могу взломать свой путь через это". OP хотел знать, как постоянно добавлять к $PATH:

sudo nano /etc/profile

здесь он установлен для всего и является лучшим местом для его изменения для всех вещей, нуждающихся в $PATH


мой ответ относится к настройке go-lang on Ubuntu linux/amd64.Я столкнулся с той же проблемой установки пути переменных среды (GOPATH и GOBIN), теряя его на выходе терминала и перестраивая его с помощью source <file_name> каждый раз.Ошибкой было поставить путь (GOPATH и GOBIN) в . Потратив несколько хороших часов, я обнаружил, что решение было поставить GOPATH и GOBIN на ~/.bash_rc файл в виде:

export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOPATH:$GOBIN

и делаем так, установка go работала нормально, и не было никаких потерь пути.

правка 1: Причина, по которой эта проблема может быть связана, заключается в том, что настройки для оболочек без входа, таких как ваш терминал ubuntu или gnome-terminal, где мы запускаем код go, взяты из ~./bash_rc файл и настройки для оболочек входа взяты из , и с ~/.profile файл if ~/.bash_profile файл недоступен.


постоянно добавлять переменную PATH

общие:

echo "export PATH=$PATH:/new/path/variable" >> /etc/profile

Local (только для пользователя):

echo "export PATH=$PATH:/new/path/variable" >> ~/.profile

на глобальные перезагрузка. Для местные перелогиниться.

пример

перед:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin

после:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable

в качестве альтернативы вы можете просто изменить профиль:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable

другой способ(спасибо gniourf_gniourf):

echo 'PATH=$PATH:/new/path/variable' >> /etc/profile

вы не должны использовать двойные кавычки здесь! экспорт Эхо ' PATH=$PATH:/new/path / variable'... И кстати, ключевое слово export очень вероятно, бесполезно, поскольку переменная PATH уже очень вероятна помечены как экспортируемые. – gniourf_gniourf


добавить /etc/profile.d скрипт папку [name_of_script].sh С строку: export PATH=$PATH:/dir. Каждый сценарий в /etc/profile.d папка автоматически выполняется /etc/profile при входе в систему.


лучший простой способ-следующая строка:
PATH="<directory you want to include>:$PATH"
в твоем .файл bashrc в домашнем каталоге.
Он не будет сброшен, даже если вы закроете терминал или перезагрузить компьютер. Его постоянный


Я думаю, что самый элегантный способ это:

1.добавьте это в ~./bashrc и

if [ -d "new-path" ]; then
  PATH=$PATH:new-path
fi

2.источник ~/.bashrc и

(Ubuntu)


один из способов, чтобы добавить постоянный путь, который работал для меня: cd / etc / профиль.д сенсорный custom.sh vi custom.sh экспорт PATH=$PATH: / path в соответствии с вашими настройками/ перезагрузите компьютер и здесь мы идем путь будет там постоянно овации.


для дистрибутива debian необходимо:

    - edit ~/.bashrc  e.g: vim ~/.bashrc 
    - add export PATH=$PATH:/path/to/dir
    - then restart your computer. Be aware that if you edit ~/.bashrc  as root, your environment variable you added will work only for root

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

echo 'export PATH=$PATH: / new / directory' >>~/.zshrc источник./~ zshrc