- Переменная окружения $PATH в linux
- Как посмотреть значение переменной $PATH в Линукс
- Где хранится значение переменной $PATH ?
- Где ещё применяется значение переменной $PATH в linux?
- Резюме
- Переменные среды Path
- Настройка переменной среды PATH в Linux и Mac OS с использованием оболочки Bash
- Настройка переменной среды PATH в ОС Windows
- Фундаментальные основы Linux. Часть III. Раскрытие команд командной оболочкой
- Глава 12. Переменные командной оболочки
- Символ доллара ($)
- Зависимость от регистра
- Создание переменных
- Кавычки
- Команда set
- Команда unset
- Переменная окружения $PS1
- Переменная окружения $PATH
- Команда env
- Команда export
- Разграничения переменных
- Несвязанные переменные
- Практическое задание: переменные командной оболочки
- Корректная процедура выполнения практического задания: переменные командной оболочки
- Как добавить каталог в PATH в Linux
- Что такое $PATH в Linux
- Добавление каталога в ваш $PATH
- Выводы
Переменная окружения $PATH в linux
Когда в консоли Debian мы вводим какую-то команду или функцию, откуда он знает, где она лежит, как находит и запускает её или не находит и выдаёт ошибку? Объясняется это тем, что есть переменная, в которой хранятся пути до папок, в которых происходит поиск введённой команды (функции или скрипта). И если *nix находит соответствие заданному запросу, то запускает эту команду на исполнение (с дополнительными параметрами, если они введены) или выдаёт ошибку: «Пичалька, всё обыскал, но не понимаю, о чём ты спрашиваешь и чего хочешь.»
Как посмотреть значение переменной $PATH в Линукс
Для того, чтобы увидеть, какие папки при поиске заданной команды Линукс обходит в её поиске, достаточно вывести её значение с помощью команды echo :
В результате получим список директорий (папок), в которых предположительно могут находиться запрашиваемые команды или программы, например:
Как видно на примере выше, если список директорий состоит из более чем одной папки, они разделяются между собой символом двоеточия : .
Таким образом, можно понять, в каких папках Unix поискал (и не нашёл) нужной команды или программы, при неудачном стечении обстоятельств и тихо ругнулся:
Однако, если данная команда и/или программа существует и вы точно знаете, где она лежит, можно прописать до неё путь (относительный или абсолютный) и тогда она отработает свой сценарий:
Где хранится значение переменной $PATH ?
Значение переменной $PATH (список папок) вычисляется в файле /etc/profile .
В некоторых источниках пишут ещё при использовании файла /etc/environment .
Где ещё применяется значение переменной $PATH в linux?
В linux могут использоваться различные языки программирования и для того, чтобы система могла понимать, какой интерпретатор использовать при выполнении программного кода, в начале после знака # используется путь до него. Если по этому пути ничего не найдено, то при запуске такого кода тоже будет выдана ошибка.
Так, например, bash-скрипты начинаются строчкой:
А скрипты на языке программирования Perl, такой:
Резюме
Таким образом становится предварительно понятно, как происходит эта магия того, что компьютер может отвечать на какие-то запросы, выполняя требуемые действия при вводе определённых команд. 😉
Источник
Переменные среды Path
Пакет AIR SDK содержит несколько программ, которые можно запускать из командной строки или окна терминала. Запускать эти программы будет намного удобнее, если определить путь к каталогу bin SDK с помощью переменной среды Path.
В данном разделе представлено общее описание процедуры настройки пути в Windows, Mac и Linux. Однако конфигурации компьютеров могут существенно отличаться, поэтому данная процедура работает не во всех системах. В этом случае нужную информацию можно найти в документации по операционной системе или в Интернете.
Настройка переменной среды PATH в Linux и Mac OS с использованием оболочки Bash
Когда команда вводится в окно терминала, оболочка (программа, которая считывает вводимые команды и пытается отреагировать соответствующим образом) сначала должна найти программу команды в файловой системе. Оболочка выполняет поиск команд в списке каталогов, который хранится в переменной среды с именем $PATH. Чтобы посмотреть текущее значение переменной path, введите следующую команду:
Будет выведен список разделенных двоеточием каталогов примерно в таком виде:
Путь к каталогу bin пакета AIR SDK необходимо добавить в этот список, чтобы оболочка могла находить ADT и инструменты ADT. Предположим, что AIR SDK находится в каталоге /Users/fred/SDKs/AIR . В этом случае для добавления нужных каталогов в переменную среды path используется следующая команда:
Чтобы проверить результаты добавления, можно еще раз выполнить команду echo :
Каталоги добавлены успешно. Теперь вы сможете вызывать следующие команды и получать корректный ответ:
Если переменная среды $PATH была изменена правильно, в результате выполнения команды должна быть выдана версия среды ADT.
Однако имеется одна проблема: при открытии нового окна терминала вы заметите, что переменная path больше не содержит новые элементы, которые ранее были в нее добавлены. Команду настройки пути необходимо выполнять каждый раз при запуске нового терминала.
Общим решением этой проблемы будет добавление команды в один из сценариев запуска, которые используются оболочкой. В ОС Mac OS можно создать файл .bash_profile в каталоге
/username, который будет запускаться каждый раз при открытии нового окна терминала. В Ubuntu сценарием, который запускается при открытии нового окна терминала, является .bashrc. В других дистрибутивах Linux и оболочках применяются аналогичные правила.
Процедура добавления команды в сценарий запуска оболочки
Измените домашний каталог:
Создайте профиль конфигурации оболочки (при необходимости) и перенаправьте вводимый текст в конец файла с помощью команды « cat >> ». Используйте соответствующий файл для своей операционной системы и оболочки. Например, в ОС Mac OS можно использовать .bash_profile , а в Ubuntu — .bashrc .
Введите текст, который требуется добавить в файл:
Завершите перенаправление текста, нажав клавиши CTRL-SHIFT-D на клавиатуре.
Отобразите файл, чтобы убедиться в правильности выполнения операции:
Откройте новое окно терминала, чтобы проверить путь:
Добавленные элементы должны быть выведены на экране.
Если позднее будет создана новая версия одного из пакетов SDK, которая будет помещена в другой каталог, команду настройки пути в файле конфигурации необходимо будет обновить соответствующим образом. В противном случае оболочка продолжит использование старой версии.
Настройка переменной среды PATH в ОС Windows
При открытии командное окно в Windows наследует глобальные переменные среды, определенные в свойствах системы. Одной из важных переменных является переменная path, содержащая список каталогов, в которых выполняется поиск введенной программы. Чтобы посмотреть текущий список каталогов в переменной path, в командном окне можно ввести следующую команду:
Будет выведен список разделенных двоеточием каталогов, который выглядит примерно следующим образом:
Путь к каталогу bin пакета AIR SDK необходимо добавить в этот список, чтобы программа команд могла находить ADT и инструменты ADT. Предположим, что пакет AIR SDK находится в каталоге C:\SDKs\AIR . В этом случае путь можно добавить следующим образом:
В разделе «Панель управления» откройте диалоговое окно «Свойства системы» или нажмите правой кнопкой мыши на значке «Мой компьютер» и в меню выберите пункт «Свойства».
На вкладке «Дополнительно» нажмите кнопку «Переменные среды».
В разделе «Системные переменные» диалогового окна «Переменные среды» выберите элемент «Path».
Нажмите кнопку «Изменить».
Перейдите в конец строки в поле «Значение переменной».
В самом конце текущего значения введите следующий текст:
Нажмите кнопку «OK» во всех диалоговых окнах, чтобы сохранить путь.
Если в этот момент имеются открытые командные окна, изменения для них применены не будут. Откройте новое командное окно и введите следующую команду, чтобы убедиться в правильности настройки переменной среды:
Если позднее расположение пакета AIR SDK будет изменено или будет добавлена новая версия, переменную среды path необходимо будет изменить соответствующим образом.
На посты, размещаемые в Twitter™ и Facebook, условия Creative Commons не распространяются.
Источник
Фундаментальные основы Linux. Часть III. Раскрытие команд командной оболочкой
Глава 12. Переменные командной оболочки
В данной главе мы познакомимся с методикой работы с переменными окружения с использованием командной оболочки. Эти переменные обычно требуются для работы приложений.
Символ доллара ($)
Еще одним важным интерпретируемым командной оболочкой символом является символ доллара $ . Командная оболочка будет искать переменную окружения с именем, соответствующим размещенной после символа доллара строке, и заменять данный символ и имя переменной на значение этой переменной (или ни на что в том случае, если переменной не существует).
Зависимость от регистра
Создание переменных
Кавычки
Команда set
Вы можете использовать команду set для вывода списка переменных окружения. В системах Ubuntu и Debian команда set также выведет список функций командной оболочки после списка переменных командной оболочки. Поэтому для ознакомления со всеми элементами списка переменных окружения при работе с данными системами рекомендуется использовать команду set | more .
Команда unset
Переменная окружения $PS1
Переменная окружения $PS1 устанавливает формат приветствия вашей командной оболочки. При вводе строки форматирования вы можете использовать обратный слэш для экранирования таких специальных символов, как символ \u , предназначенный для вывода имени пользователя, или \w , предназначенный для вывода имени рабочей директории. На странице руководства командной оболочки bash представлен полный список специальных символов.
Переменная окружения $PATH
Команда env
Команда env в случае использования без параметров выведет список экспортированных переменных окружения . Отличие данной команды от команды set с параметрами заключается в том, что команда set выводит список всех переменных окружения, включая те переменные, которые не экспортируются в дочерние командные оболочки.
Кроме того, команда env может также использоваться для запуска «чистой» командной оболочки (командной оболочки без наследования какого-либо окружения). Команда env -i позволяет очистить окружение дочерней командной оболочки.
Команда export
Разграничения переменных
Несвязанные переменные
В командной оболочке bash команда set -u идентична команде set -o nounset и, по аналогии, команда set +u идентична команде set +o nounset .
Практическое задание: переменные командной оболочки
1. Используйте команду echo для вывода строки «Привет», после которой должно следовать ваше имя. (Используйте переменную командной оболочки bash!)
2. Создайте переменную answer , значение которой равно 42.
3. Скопируйте значение переменной $LANG в значение переменной $MyLANG.
4. Выведите список используемых в данное время переменных командной оболочки.
5. Выведите список всех экспортируемых переменных командной оболочки.
6. Присутствует ли информация о вашей переменной в выводе команд env и set ?
7. Уничтожьте вашу переменную answer .
8. Создайте две переменные и экспортируйте одну из них.
9. Выведите значение экспортированной переменной в дочерней интерактивной командной оболочке.
10. Создайте переменную и присвойте ей значение ‘Dumb’, после чего аналогичным образом создайте другую переменную с значением ‘do’. Используйте команду echo и две созданные переменные для вывода слова ‘Dumbledore’.
11. Найдите список экранированных с помощью обратного слэша управляющих символов на странице руководства командной оболочки bash. Добавьте управляющий символ в значение переменной PS1 для вывода времени в приветствии командной оболочки.
Корректная процедура выполнения практического задания: переменные командной оболочки
1. Используйте команду echo для вывода строки «Привет», после которой должно следовать ваше имя. (Используйте переменную командной оболочки bash!)
2. Создайте переменную answer , значение которой равно 42.
3. Скопируйте значение переменной $LANG в значение переменной $MyLANG.
4. Выведите список используемых в данное время переменных командной оболочки.
5. Выведите список всех экспортируемых переменных командной оболочки.
6. Присутствует ли информация о вашей переменной в выводе команд env и set ?
7. Уничтожьте вашу переменную answer .
8. Создайте две переменные и экспортируйте одну из них.
9. Выведите значение экспортированной переменной в дочерней интерактивной командной оболочке.
10. Создайте переменную и присвойте ей значение ‘Dumb’, после чего аналогичным образом создайте другую переменную с значением ‘do’. Используйте команду echo и две созданные переменные для вывода слова ‘Dumbledore’.
11. Найдите список экранированных с помощью обратного слэша управляющих символов на странице руководства командной оболочки bash. Добавьте управляющий символ в значение переменной PS1 для вывода времени в приветствии командной оболочки.
Источник
Как добавить каталог в PATH в Linux
Когда вы вводите команду в командной строке, вы в основном говорите оболочке запустить исполняемый файл с заданным именем. В Linux эти исполняемые программы, такие как ls , find , file и другие, обычно find в нескольких разных каталогах вашей системы. Любой файл с исполняемыми разрешениями, хранящийся в этих каталогах, может быть запущен из любого места. Наиболее распространенные каталоги, содержащие исполняемые программы, — это /bin , /sbin , /usr/sbin , /usr/local/bin и /usr/local/sbin .
Но как оболочка узнает, в каких каталогах искать исполняемые программы? Оболочка выполняет поиск по всей файловой системе?
Ответ прост. Когда вы вводите команду, оболочка просматривает все каталоги, указанные в $PATH пользователя, в поисках исполняемого файла с таким именем.
В этой статье показано, как добавить каталоги в $PATH в системах Linux.
Что такое $PATH в Linux
Переменная среды $PATH представляет собой список каталогов, разделенных двоеточиями, который сообщает оболочке, в каких каталогах следует искать исполняемые файлы.
Чтобы проверить, какие каталоги находятся в вашем $PATH , вы можете использовать команду printenv или echo :
Результат будет выглядеть примерно так:
Если у вас есть два исполняемых файла с одинаковым именем, расположенных в двух разных каталогах, оболочка запустит файл, который находится в каталоге, который идет первым в $PATH .
Добавление каталога в ваш $PATH
Бывают ситуации, когда вы можете захотеть добавить другие каталоги в $PATH . Например, некоторые программы могут быть установлены в разных местах или вы можете захотеть иметь специальный каталог для ваших личных сценариев, но иметь возможность запускать их, не указывая абсолютный путь к исполняемым файлам. Для этого вам просто нужно добавить каталог в ваш $PATH .
Допустим, у вас есть каталог bin расположенный в вашем домашнем каталоге, в котором вы храните сценарии оболочки. Чтобы добавить каталог в ваш $PATH введите:
Команда export экспортирует измененную переменную в среду дочернего процесса оболочки.
Теперь вы можете запускать свои сценарии, вводя имя исполняемого сценария без необходимости указывать полный путь к файлу.
Однако это изменение носит временный характер и действует только в текущем сеансе оболочки.
Чтобы сделать изменение постоянным, вам необходимо определить $PATH в файлах конфигурации оболочки. В большинстве дистрибутивов Linux при запуске нового сеанса переменные среды считываются из следующих файлов:
Глобальные файлы конфигурации оболочки, такие как /etc/environment и /etc/profile . Используйте этот файл, если хотите, чтобы новый каталог был добавлен всем пользователям системы $PATH .
Файлы конфигурации для конкретной оболочки пользователя. Например, если вы используете Bash, вы можете установить $PATH в файле
/.bashrc . Если вы используете Zsh, имя файла
В этом примере мы установим переменную в файле
/.bashrc . Откройте файл в текстовом редакторе и добавьте в конец следующую строку:
Сохраните файл и загрузите новый $PATH в текущий сеанс оболочки с помощью source команды:
Чтобы убедиться, что каталог был успешно добавлен, распечатайте значение вашего $PATH , набрав:
Выводы
Добавить новые каталоги к вашему пользователю или глобальной $PATH довольно просто. Это позволяет выполнять команды и сценарии, хранящиеся в нестандартных местах, без необходимости вводить полный путь к исполняемому файлу.
Те же инструкции применимы для любого дистрибутива Linux, включая Ubuntu, CentOS, RHEL, Debian и Linux Mint.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Источник