Операционная система | Unix , Unix-подобный , Inferno |
---|---|
Платформа | Кроссплатформенность |
Тип | Команда |
Лицензия | coreutils : GPLv3 + |
env
- это команда оболочки для Unix и Unix-подобных операционных систем . Он используется либо для печати списка переменных среды, либо для запуска другой утилиты в измененной среде без изменения существующей в настоящее время среды. Используя , переменные могут быть добавлены или удалены, а существующие переменные могут быть изменены путем присвоения им новых значений. env
На практике env
имеет еще одно обычное применение. Он часто используется сценариями оболочки для запуска правильного интерпретатора . При таком использовании окружающая среда обычно не изменяется.
История [ править ]
Встроенная env
в GNU coreutils версия была написана Ричардом Млинариком, Дэвидом Маккензи и Ассафом Гордоном. [1] Впервые он появился в 4.4BSD и является частью POSIX.1 (только с параметром -i ). [2]
GNU env был расширен для обработки сигналов и текущего каталога. [1] FreeBSD «s окр поддерживает пользовательский путь поиска. В обеих версиях есть расширения: -u для отмены установки переменных и -S для разделения аргументов (в основном в shebang). [2]
Примеры [ править ]
Чтобы распечатать список всех переменных среды, просто запустите env без аргументов:
env
Чтобы очистить среду (создание новой среды без каких-либо существующих переменных среды) для новой оболочки:
env -i / bin / sh
Чтобы запустить приложение X xcalc и отобразить его на другом дисплее:
env DISPLAY = foo.bar:1.0 xcalc
Обратите внимание, что в таком использовании env часто нет необходимости, поскольку большинство оболочек поддерживают установку переменных среды перед командой:
ДИСПЛЕЙ = foo.bar:1.0 xcalc
env также может использоваться в строке hashbang скрипта, чтобы разрешить поиск интерпретатора через PATH. Например, вот код очень простого скрипта Python :
#! / usr / bin / env python3
print ( "Hello, World!" )
В этом примере /usr/bin/env
это полный путь к env
команде. Окружающая среда не изменена.
Обратите внимание, что можно указать интерпретатор без использования env
, указав полный путь к python
интерпретатору. Проблема с этим подходом заключается в том, что в разных компьютерных системах точный путь может отличаться. Вместо использования, env
как в примере, интерпретатор ищется и обнаруживается во время запуска сценария (точнее, env
выполняет системный вызов execvp
, который выполняет работу по обнаружению интерпретатора и его запуску). Это делает сценарий более переносимым , но также увеличивает риск выбора неправильного интерпретатора, поскольку он ищет совпадения в каждом каталоге на пути поиска исполняемых файлов. Он также страдает той же проблемой, поскольку путь к env
двоичному файлу также может отличаться для каждой машины.
См. Также [ править ]
- набор
Ссылки [ править ]
- ^ Б - Linux User в Руководство - Команды пользователя
- ^ a b - Руководство по основным командам FreeBSD
Внешние ссылки [ править ]
В Wikibook Guide to Unix есть страница по теме: Команды |
- : установить среду для вызова команд - Справочник по командам и служебным программам, Единая спецификация UNIX , Выпуск 7 из Open Group
- - Руководство по общим командам Inferno
- env - страница руководства из GNU coreutils .
- : запускать программу в модифицированной среде - OpenBSD General Commands Manual
- : установка и окружение печати - Руководство по основным командам NetBSD