env
- это команда оболочки для Unix и Unix-подобных операционных систем . Он используется либо для печати списка переменных среды, либо для запуска другой утилиты в измененной среде без необходимости изменения существующей в настоящее время среды. Используя , переменные могут быть добавлены или удалены, а существующие переменные могут быть изменены путем присвоения им новых значений. env
Операционная система | Unix , Unix-подобный , Inferno |
---|---|
Платформа | Кроссплатформенность |
Тип | Командование |
Лицензия | coreutils : GPLv3 + |
На практике env
имеет еще одно обычное применение. Он часто используется сценариями оболочки для запуска правильного интерпретатора . При таком использовании окружающая среда обычно не изменяется.
История
Встроенная env
в GNU coreutils версия была написана Ричардом Млинариком, Дэвидом Маккензи и Ассафом Гордоном. [1] Впервые он появился в 4.4BSD и является частью POSIX.1 (только с параметром -i ). [2]
GNU env был расширен для обработки сигналов и текущего каталога. [1] FreeBSD «ы env поддерживает настраиваемый путь поиска. Расширения, найденные в обеих версиях, включают -u , для сброса переменных, и -S , для разделения аргументов (в основном в shebang). [2]
Примеры
Чтобы распечатать набор текущих переменных среды:
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 -
Внешние ссылки
- : установить среду для вызова команд - Справочник по командам и служебным программам, Спецификация Single UNIX , Выпуск 7 из The Open Group
- - Руководство по общим командам Inferno
- env - страница руководства из GNU coreutils .
- : запустить программу в измененной среде - OpenBSD General Commands Manual
- : установка и среда печати - Руководство по основным командам NetBSD