Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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двоичному файлу также может отличаться для каждой машины.

См. Также [ править ]

  • набор

Ссылки [ править ]

  1. ^ Б env(1)  -  Linux User в Руководство - Команды пользователя
  2. ^ a b env(1)  -  Руководство по основным командам FreeBSD

Внешние ссылки [ править ]

  • env: установить среду для вызова команд - Справочник по командам и служебным программам, Единая спецификация UNIX , Выпуск 7 из Open Group
  • env(1) -  Руководство по общим командам Inferno
  • env - страница руководства из GNU coreutils .
  • env(1): запускать программу в модифицированной среде -  OpenBSD General Commands Manual
  • env(1): установка и окружение печати -  Руководство по основным командам NetBSD