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


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

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

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

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

20 639

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. Это паста из моего /etc/environment file:

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.k.A Z Shell), добавить эта строка сразу после комментариев в /etc/zsh/zshenv:

source /etc/environment

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

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

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

системы

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

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

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

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

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

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

    например, в моем случае я установлю путь 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

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

export 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 имеет правильную идею. ОП не сказал:"как я могу взломать свой путь через это". ОП хотел знать, как постоянно добавлять к $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 файл и настройки для оболочек входа берутся из , и с если ~/.bash_profile файл недоступен.

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

Global:

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

локальный (только для пользователя):

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

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

пример

перед:

$ 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 file

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