Как редактировать path linux

Переменная PATH в Linux

Когда вы запускаете программу из терминала или скрипта, то обычно пишете только имя файла программы. Однако, ОС Linux спроектирована так, что исполняемые и связанные с ними файлы программ распределяются по различным специализированным каталогам. Например, библиотеки устанавливаются в /lib или /usr/lib, конфигурационные файлы в /etc, а исполняемые файлы в /sbin/, /usr/bin или /bin.

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

Переменная PATH в Linux

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

На экране появится перечень папок, разделённых двоеточием. Алгоритм поиска пути к требуемой программе при её запуске довольно прост. Сначала ОС ищет исполняемый файл с заданным именем в текущей папке. Если находит, запускает на выполнение, если нет, проверяет каталоги, перечисленные в переменной PATH, в установленном там порядке. Таким образом, добавив свои папки к содержимому этой переменной, вы добавляете новые места размещения исполняемых и связанных с ними файлов.

Для того, чтобы добавить новый путь к переменной PATH, можно воспользоваться командой export. Например, давайте добавим к значению переменной PATH папку/opt/local/bin. Для того, чтобы не перезаписать имеющееся значение переменной PATH новым, нужно именно добавить (дописать) это новое значение к уже имеющемуся, не забыв о разделителе-двоеточии:

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

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

В ОС Ubuntu значение переменной PATH содержится в файле /etc/environment, в некоторых других дистрибутивах её также можно найти и в файле /etc/profile. Вы можете открыть файл /etc/environment и вручную дописать туда нужное значение:

sudo vi /etc/environment

Выводы

В этой статье мы рассмотрели вопрос о том, зачем нужна переменная окружения PATH в Linux и как добавлять к её значению новые пути поиска исполняемых и связанных с ними файлов. Как видите, всё делается достаточно просто. Таким образом вы можете добавить столько папок для поиска и хранения исполняемых файлов, сколько вам требуется.

Источник

ИТ База знаний

Полезно

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Навигация

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Переменные окружения в Linux: как посмотреть, установить и сбросить

Работа с переменными

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

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

Переменные окружения и переменные оболочки

Переменные имеют следующий формат:

Должны соблюдаться следующие правила:

Переменные можно разделить на две категории:

Про Linux за 5 минут

Вывести список всех переменных окружения и оболочки

А как посмотреть переменные оболочки?

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

Общий набор переменных окружения в Linux

Посмотрим на общий набор переменных окружения, которые вы можете найти в своей системе.

Установка переменных окружения в Linux

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

Для примера создаим новую переменную, а затем экспортируем ее.

Чтобы создать новую переменную оболочки с именем NEW_VARIABLE и значением «test», и затем сразу экспортировать ее введите:

Установить постоянные переменные окружения в Linux

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

Читайте также:  чем мыть пластиковую кухню без разводов средства

Сохраните ваш файл и используйте команду source для перезагрузки файла bashrc для текущего сеанса оболочки.

Вы можете вывести новую переменную окружения с помощью printenv и посмотреть, дату в Linux, изменив TZ.

Отлично, ваши изменения теперь сохраняются после перезагрузки оболочки или системы!

Использование etc/environment

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

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

Установить переменные окружения в одной строкой

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

Сбросить переменные окружения в Linux

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

Использование команды unset

Чтобы удалить переменную окружения, используйте команду unset со следующим синтаксисом:

Установить переменную окружения PATH в Linux

Успех! Вы успешно обновили переменную окружения PATH в Linux.

Заключение

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Источник

Переменная PATH в Linux

Когда вы запускаете программу из терминала или скрипта, то обычно пишете только имя файла программы. Однако, ОС Linux спроектирована так, что исполняемые и связанные с ними файлы программ распределяются по различным специализированным каталогам. Например, библиотеки устанавливаются в /lib или /usr/lib, конфигурационные файлы в /etc, а исполняемые файлы в /sbin/, /usr/bin или /bin.

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

Переменная PATH в Linux

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

На экране появится перечень папок, разделённых двоеточием. Алгоритм поиска пути к требуемой программе при её запуске довольно прост. Сначала ОС ищет исполняемый файл с заданным именем в текущей папке. Если находит, запускает на выполнение, если нет, проверяет каталоги, перечисленные в переменной PATH, в установленном там порядке. Таким образом, добавив свои папки к содержимому этой переменной, вы добавляете новые места размещения исполняемых и связанных с ними файлов.

Для того, чтобы добавить новый путь к переменной PATH, можно воспользоваться командой export. Например, давайте добавим к значению переменной PATH папку/opt/local/bin. Для того, чтобы не перезаписать имеющееся значение переменной PATH новым, нужно именно добавить (дописать) это новое значение к уже имеющемуся, не забыв о разделителе-двоеточии:

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

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

В ОС Ubuntu значение переменной PATH содержится в файле /etc/environment, в некоторых других дистрибутивах её также можно найти и в файле /etc/profile. Вы можете открыть файл /etc/environment и вручную дописать туда нужное значение:

Источник

Как правильно добавить путь к PATH?

Простые вещи

в зависимости от того, хотите ли вы добавить

/opt/bin в конце (для поиска после всех других каталогов, если есть программа с одинаковым именем в нескольких каталогах) или в начале (для поиска перед всеми другими каталогами).

Читайте также:  чем облагородить стены на балконе

Вы можете добавить несколько записей одновременно. PATH=$PATH:

/opt/node/bin или вариации на заказ работают просто отлично. Не ставьте export в начале строки, так как это связано с дополнительными сложностями (см. Ниже «Примечания к оболочкам, кроме bash»).

/bin Кстати, некоторые дистрибутивы автоматически помещают в ваш PATH, если он существует.

Где его поставить

/.bash_profile если это то, что у вас есть.

Обратите внимание, что

/.bash_rc не читается ни одной программой, и

/.bashrc является файлом конфигурации интерактивных экземпляров bash. Вы не должны определять переменные среды в

/.bash_profile если вас не волнуют другие оболочки, кроме bash). Посмотрите, в чем разница между ними и какой я должен использовать?

Не помещайте это в /etc/environment или

Потенциальные осложнения в некоторых системных скриптах

Вам не нужно, export если переменная уже находится в среде: любое изменение значения переменной отражается в среде. PATH ¹ в значительной степени всегда в среде; все системы Unix устанавливают его очень рано (обычно в самом первом процессе).

Примечания о снарядах, кроме Баш

В bash, ksh и zsh, export есть специальный синтаксис, и то и другое PATH=

/opt/bin:$PATH и export PATH=

/opt/bin:$PATH делают правильные вещи даже. В других оболочках в стиле Bourne / POSIX, таких как dash (который есть /bin/sh во многих системах), export анализируется как обычная команда, что подразумевает два различия:

Таким образом, в таких оболочках, как dash, export PATH=

/opt/bin:$PATH устанавливается PATH литеральная строка,

/opt/bin/: за которой следует значение PATH до первого пробела. PATH=

/opt/bin:$PATH (голое задание) не требует кавычек и делает правильные вещи. Если вы хотите использовать export в переносимом скрипте, вам нужно написать export PATH=»$HOME/opt/bin:$PATH» или PATH=

/opt/bin:$PATH; export PATH (или PATH=$HOME/opt/bin:$PATH; export PATH для переносимости даже в оболочку Bourne, которая не принимала export var=value и не выполняла расширение тильды).

¹ Это было не так в оболочках Bourne (как в реальной оболочке Bourne, а не в современных оболочках в стиле POSIX), но в наши дни вы вряд ли встретите такие старые оболочки.

В любом случае работает, но они не делают то же самое: элементы PATH проверяются слева направо. В вашем первом примере исполняемые файлы in

В частности, с точки зрения безопасности, опасно добавлять пути вперед, потому что, если кто-то может получить доступ для записи к вашему

Я смущен вопросом 2 (так как удален из вопроса, так как это было связано с не связанной проблемой):

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

но это не так, потому что второе назначение не только добавляет

Это возможный обходной путь:

но для удобства чтения я предпочел бы иметь одно назначение для одного пути.

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

Пуленепробиваемый способ добавления / предоплаты

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

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

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

Примечание : это для bash.

* 1 Я только что обнаружил, что подобные сценарии devtoolset-6/enable действительно используют это,

Чтобы добавить этот каталог в конец пути, используйте следующую команду:

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

Включение в основном включает «вызываемый» сценарий в «вызывающий» сценарий. Это как #include в C. Так что это эффективно внутри «вызывающего» скрипта или программы. Но, конечно, это не эффективно ни в каких программах или скриптах, вызываемых вызывающей программой. Чтобы сделать его эффективным на протяжении всей цепочки вызовов, вы должны следовать настройке переменной среды с помощью команды экспорта.

Источник

PATH HOWTO

Данный документ переведен в рамках проекта Russian Linux Documentation Project

v0.4, 15 November 1997

1. Введение

Этот документ описывает основные тонкости и проблемы, при работе с переменными окружения Unix/Linux, в особенности с переменной PATH (путь). PATH это список директорий, где производится поиск исполняемых программ. Детали относятся к Debian Linux 1.3.

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

2. О Russian Linux Documentation Project

В переводе данного HOWTO участвовали:

Автор английской версии Esa Turtiainen etu@dna.fi

3. Условия распространения

Этот документ представляет собой свободную документацию; вы можете распространять и/или модифицировать его на условиях GNU General Public License, опубликованной Free Software Foundation; как версии 2, так и (на ваше усмотрение) любой более поздней версии.

Данная документация распространяется в надежде, что она будет полезна, но без КАКИХ ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии КОММЕРЧЕСКОЙ ЦЕННОСТИ или гарантии ПРИГОДНОСТИ В КОНКРЕТНЫХ СЛУЧАЯХ. Детали смотри в Gnu General Public License.

Вы должны были получить копию GNU General Public License вместе с этой документацией; если нет, пишите Free Software Foundation,Inc., 675 Mass Ave, Cambridge,MA 02139,USA.

4. Общие принципы

В данном howto, я использую термин ‘команда’, чтобы обозначить исполняемую программу, которая запускается на исполнение с помощью короткого имени, используя механизм path.

В Линукс, даже низкоуровневые вызовы операционной системы для запуска процессов (семейство вызовов exec) просматривают директории указанные в переменной PATH: вы можете использовать механизм path везде, где вы пытаетесь исполнить команду. Даже если переменная PATH не установлена в окружении, по крайней мере директории /bin и /usr/bin, просматриваются в поисках подходящих команд.

В sh вы можете использовать команду export, чтобы установить окружение, в csh вы можете использовать команду setenv. Например:

Команда env это простейший путь запросить текущие переменные окружения. Её можно также использовать для их модификации.

Более подробную информацию о механизме работы окружения, можно найти в страницах руководства ‘environ’, ‘execl’, ‘setenv’, и info файле ‘env’, а также в документации на различные командные интерпретаторы.

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

5. Init

Init это родительский процесс для всех процессов в системе. Другие процессы наследуют окружение init и переменная path будет соответствовать переменной path для init, в том редком случае, когда она не была модифицирована.

Содержимое ‘init path’ прописано в исходном коде программы init:

Заметьте, что путь init, не включает /usr/local/bin.

Все программы, запущенные из /etc/inittab, работают в окружении init, особенно системные скрипты инициализации в /etc/init.d/ (Debian 1.3).

Все, что запущено из скриптов инициализации системы, по умолчанию имеет окружение init. Например: syslog,kerneld,pppd (если он запускается при загрузке), gpm и, что более важно, lpd и inetd, наследуют окружение init и не изменяют его.

Группа программ запускается при помощи скриптов запуска, но переменная PATH явно устанавливается в скрипте запуска. Например: atd,sendmail,apache и squid.

Есть также другие программы, стартующие из загрузочных скриптов, но они полностью изменяют свою переменную path. Одна из таких программ cron.

6. Вход в систему

В текстовой консоли, программа getty ждет входа пользователя в систему. Она выводит на консоль ‘login:’ и другие сообщения. Она работает с окружением init. Когда getty пропускает пользователя в систему, она запускает программу ‘login’, которая устанавливает пользовательское окружение и запускает shell.

Программа login устанавливает путь, как описано в /usr/include/paths.h. Причем его значение различно для root и обыкновенных пользователей.

Переменная path обычных пользователей не содержит директорий sbin. В тоже время она содержит текущую директорию, ‘.’, что считается опасным для пользователя root. Также path для root не содержит /usr/local/bin.

Значение path установленное login, часто переписывается при инициализации shell. В тоже время возможно указывать другие программы в /etc/passwd в качестве командных интерпретаторов пользователя. Например, я использовал следующую строку, чтобы запускать PPP, когда я вхожу под определенным именем пользователя. В данном случае, pppd наследует путь login.

7. Командные интерпретаторы

Часто пользовательские процессы являются дочерними процессами командного интерпретатора, указанного в /etc/passwd для данного пользователя. Файлы инициализации командных интерпретаторов обычно модифицируют этот путь.

7.1. bash

Если bash используется с именем sh, вместо bash, он эмулирует инициализацию оригинального Bourne shell интерпретатора: исполняет только файлы /etc/profile и ˜/.profile и только для ‘login’ интерпретаторов.

7.2. tcsh

В качестве login интерпретатора tcsh исполняет следующие файлы в указанном порядке:

Источник

Обо всем