Добавить путь переменную path linux

How to correctly add a path to PATH?

I’m wondering where a new path has to be added to the PATH environment variable. I know this can be accomplished by editing .bashrc (for example), but it’s not clear how to do this. This way:

If there are already some paths added, e.g. PATH=$PATH:$HOME/.local/bin:$HOME/bin , another can be added by separating with a : e.g. PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/ec2-user/pear/bin .

12 Answers 12

The simple stuff

depending on whether you want to add ~/opt/bin at the end (to be searched after all other directories, in case there is a program by the same name in multiple directories) or at the beginning (to be searched before all other directories).

You can add multiple entries at the same time. PATH=$PATH:~/opt/bin:~/opt/node/bin or variations on the ordering work just fine. Don’t put export at the beginning of the line as it has additional complications (see below under “Notes on shells other than bash”).

If your PATH gets built by many different components, you might end up with duplicate entries. See How to add home directory path to be discovered by Unix which command? and Remove duplicate $PATH entries with awk command to avoid adding duplicates or remove them.

Some distributions automatically put ~/bin in your PATH if it exists, by the way.

Where to put it

Put the line to modify PATH in ~/.profile , or in ~/.bash_profile or if that’s what you have. (If your login shell is zsh and not bash, put it in ~/.zprofile instead.)

The profile file is read by login shells, so it will only take effect the next time you log in. (Some systems configure terminals to read a login shell; in that case you can start a new terminal window, but the setting will take effect only for programs started via a terminal, and how to set PATH for all programs depends on the system.)

Note that ~/.bash_rc is not read by any program, and ~/.bashrc is the configuration file of interactive instances of bash. You should not define environment variables in ~/.bashrc . The right place to define environment variables such as PATH is ~/.profile (or ~/.bash_profile if you don’t care about shells other than bash). See What’s the difference between them and which one should I use?

Don’t put it in /etc/environment or ~/.pam_environment : these are not shell files, you can’t use substitutions like $PATH in there. In these files, you can only override a variable, not add to it.

Читайте также:  Ethernet diagnostic utility linux

Potential complications in some system scripts

You don’t need export if the variable is already in the environment: any change of the value of the variable is reflected in the environment.¹ PATH is pretty much always in the environment; all unix systems set it very early on (usually in the very first process, in fact).

At login time, you can rely on PATH being already in the environment, and already containing some system directories. If you’re writing a script that may be executed early while setting up some kind of virtual environment, you may need to ensure that PATH is non-empty and exported: if PATH is still unset, then something like PATH=$PATH:/some/directory would set PATH to :/some/directory , and the empty component at the beginning means the current directory (like .:/some/directory ).

if [ -z "$" ]; then export PATH=/usr/local/bin:/usr/bin:/bin; fi 

Notes on shells other than bash

In bash, ksh and zsh, export is special syntax, and both PATH=~/opt/bin:$PATH and export PATH=~/opt/bin:$PATH do the right thing even. In other Bourne/POSIX-style shells such as dash (which is /bin/sh on many systems), export is parsed as an ordinary command, which implies two differences:

  • ~ is only parsed at the beginning of a word, except in assignments (see How to add home directory path to be discovered by Unix which command? for details);
  • $PATH outside double quotes breaks if PATH contains whitespace or \[*? .

So in shells like dash, export PATH=~/opt/bin:$PATH sets PATH to the literal string ~/opt/bin/: followed by the value of PATH up to the first space. PATH=~/opt/bin:$PATH (a bare assignment) doesn’t require quotes and does the right thing. If you want to use export in a portable script, you need to write export PATH=»$HOME/opt/bin:$PATH» , or PATH=~/opt/bin:$PATH; export PATH (or PATH=$HOME/opt/bin:$PATH; export PATH for portability to even the Bourne shell that didn’t accept export var=value and didn’t do tilde expansion).

¹ This wasn’t true in Bourne shells (as in the actual Bourne shell, not modern POSIX-style shells), but you’re highly unlikely to encounter such old shells these days.

Источник

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

Когда вы вводите команду в командной строке, вы в основном говорите оболочке запустить исполняемый файл с заданным именем. В Linux эти исполняемые программы, такие как ls , find , file и другие, обычно find в нескольких разных каталогах вашей системы. Любой файл с исполняемыми разрешениями, хранящийся в этих каталогах, может быть запущен из любого места. Наиболее распространенные каталоги, содержащие исполняемые программы, — это /bin , /sbin , /usr/sbin , /usr/local/bin и /usr/local/sbin .

Но как оболочка узнает, в каких каталогах искать исполняемые программы? Оболочка выполняет поиск по всей файловой системе?

Ответ прост. Когда вы вводите команду, оболочка просматривает все каталоги, указанные в $PATH пользователя, в поисках исполняемого файла с таким именем.

В этой статье показано, как добавить каталоги в $PATH в системах Linux.

Читайте также:  Samba astra linux сетевая папка

Что такое $PATH в Linux

Переменная среды $PATH представляет собой список каталогов, разделенных двоеточиями, который сообщает оболочке, в каких каталогах следует искать исполняемые файлы.

Чтобы проверить, какие каталоги находятся в вашем $PATH , вы можете использовать команду printenv или echo :

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

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin 

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

Добавление каталога в ваш $PATH

Бывают ситуации, когда вы можете захотеть добавить другие каталоги в $PATH . Например, некоторые программы могут быть установлены в разных местах или вы можете захотеть иметь специальный каталог для ваших личных сценариев, но иметь возможность запускать их, не указывая абсолютный путь к исполняемым файлам. Для этого вам просто нужно добавить каталог в ваш $PATH .

Допустим, у вас есть каталог bin расположенный в вашем домашнем каталоге, в котором вы храните сценарии оболочки. Чтобы добавить каталог в ваш $PATH введите:

Команда export экспортирует измененную переменную в среду дочернего процесса оболочки.

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

Однако это изменение носит временный характер и действует только в текущем сеансе оболочки.

Чтобы сделать изменение постоянным, вам необходимо определить $PATH в файлах конфигурации оболочки. В большинстве дистрибутивов Linux при запуске нового сеанса переменные среды считываются из следующих файлов:

  • Глобальные файлы конфигурации оболочки, такие как /etc/environment и /etc/profile . Используйте этот файл, если хотите, чтобы новый каталог был добавлен всем пользователям системы $PATH .
  • Файлы конфигурации для конкретной оболочки пользователя. Например, если вы используете Bash, вы можете установить $PATH в файле ~/.bashrc . Если вы используете Zsh, имя файла ~/.zshrc .

В этом примере мы установим переменную в файле ~/.bashrc . Откройте файл в текстовом редакторе и добавьте в конец следующую строку:

Сохраните файл и загрузите новый $PATH в текущий сеанс оболочки с помощью source команды:

Чтобы убедиться, что каталог был успешно добавлен, распечатайте значение вашего $PATH , набрав:

Выводы

Добавить новые каталоги к вашему пользователю или глобальной $PATH довольно просто. Это позволяет выполнять команды и сценарии, хранящиеся в нестандартных местах, без необходимости вводить полный путь к исполняемому файлу.

Те же инструкции применимы для любого дистрибутива Linux, включая Ubuntu, CentOS, RHEL, Debian и Linux Mint.

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Источник

Переменная PATH в Linux — просмотр и добавление

PATH представляет собой переменную среду особой важности. Без неё трудно представить операционную систему Linux такой же гибкой и безопасной, каковой она является для своих пользователей. Давайте только представим, что произойдет с системой без этой важной переменной? Пользователю придется задавать в терминале полные пути ко всем интересующим его файлам. То есть, прописывать скрипт или команду в развернутом виде. Это отнимает кучу времени и сил, а также перегружает память человека. Без PATH система не сможет разобраться, где именно искать требуемую программу с сопутствующими компонентами. В результате Linux просто не выдает нужного запроса, если путь не указан в терминале полностью. При наличии переменной данная проблема теряет свою актуальность.

Читайте также:  Samsung ml 2015 linux driver

Как посмотреть содержимое PATH

Просмотр path

Для этих целей есть команда echo. Пользователю остается вооружиться ею для получения нужной информации. Что нужно прописать в терминале: $ echo $PATH В окне появится список каталогов, которые разделены знаком двоеточия. А теперь добавим пару слов о том, как система обнаруживает путь к определенной папке. Линукс реагирует на запуск конкретной программы, после чего начинается поиск исполняемого файла по имени. Если файл найден сразу, происходит моментальный запуск на выполнение. Но есть и другой сценарий развития событий, о котором стоит знать новичку. Если файла нет в каталоге, Линукс начинает проверять те папки, которые содержатся в переменной PATH. И, конечно же, находит запрашиваемые файлы. Проверка на предмет его поиска происходит по порядку.

Добавление нового пути

ВАЖНО! Актуальное значение не должно быть переписано полностью. Необходимо лишь дописать новое значение к старой формулировке.

Чтобы разделить оба значения, ставится знак двоеточия. С помощью export, добавим в path новый путь «/usr/newpath». export PATH=$PATH:/usr/newpath В текущем сеансе операционная система без проблем отреагирует на внесенные пользователем коррективы. Но есть один важный нюанс, о котором нельзя умолчать. Новые настройки потеряют свою актуальность после первой же перезагрузки устройства. Если новое значение потребуется юзеру на постоянной основе, ему следует закрепить его в конфигурационном системном файле. В некоторых дистрибутивах значение переменной можно найти в файле /etc/environment. Далее следует дописать нужное значение вручную (не заменить, а именно добавить). Еще раз напоминаем о важности соблюдения данного правила. В ином случае система не сможет нормально функционировать – у пользователя начнутся разного рода неприятности. Чтобы выполнить добавление значение в переменную PATH для конкретного пользователя системы, можно не изобретать велосипед, а поступить гораздо проще: $ nano ~/.bashrc export PATH=$PATH:/usr/newpath Как уже говорилось ранее, переменная PATH служит надежной защитой для операционной системы Linux. Однако пользователи нередко практикуют еще один способ того, как уберечь персональный компьютер. Каким образом это происходит? Это можно сделать посредством создания локальной папки bin. Данный каталог будет содержать в себе исполняемые файлы всех пользователей устройства, разделенные по отдельным персональным папкам.

Заключение

Из данного материала вы узнали, какую роль выполняет переменная PATH в устройстве, функционирующем на операционной системе Линукс, а также разобрались, как при помощи терминала добавлять новые пути поиска файлов к её значению. Немного попрактиковавшись, вы обязательно убедитесь в том, что подобные манипуляции с системой не отнимают много сил и времени, а при повторных действиях сможете ощутить, насколько быстро этот процесс доводится до автоматизма. Дополнительная информация для владельцев дистрибутива Линукс: пользователь не имеет никаких ограничений в вопросе добавления каталогов в переменную PATH для поиска и хранения исполняемых файлов (имеется в виду их допустимое количество). Можно добавлять столько папок, сколько нужно.

Источник

Оцените статью
Adblock
detector