окружающая среда

Утилита командной строки Unix
окружающая среда
Операционная системаUnix , Unix-подобный , Inferno
ПлатформаКроссплатформенный
ТипКоманда
Лицензияcoreutils : GPLv3+

env— это команда оболочки для Unix и Unix-подобных операционных систем . Она используется для вывода списка переменных среды или запуска другой утилиты в измененной среде без необходимости изменения текущей среды. Используя , можно добавлять или удалять переменные, а существующие переменные можно изменять, присваивая им новые значения. env

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

История

Версия, envвходящая в состав GNU coreutils , была написана Ричардом Млынариком, Дэвидом Маккензи и Асафом Гордоном. [1] Впервые она появилась в 4.4BSD и является частью POSIX.1 (только с опцией -i ). [2]

GNU env был расширен для обработки сигналов и текущего каталога. [1] FreeBSD env поддерживает пользовательский путь поиска. Расширения, найденные в обеих версиях, включают -u , для сброса переменных, и -S , для разделения аргументов (в основном в shebang). [2]

Примеры

Чтобы распечатать набор текущих переменных среды:

окружающая среда

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

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 ( "Привет, мир!" )

В этом примере /usr/bin/env— полный путь к envкоманде. Окружение не изменяется.

Обратите внимание, что можно указать интерпретатор без использования env, указав полный путь к pythonинтерпретатору. Проблема с этим подходом заключается в том, что на разных компьютерных системах точный путь может отличаться. При использовании , envкак в примере, интерпретатор ищется и находится во время запуска скрипта (точнее, envвыполняется системный вызов execvp, который выполняет работу по поиску интерпретатора и его запуску). Это делает скрипт более переносимым , но также увеличивает риск выбора неправильного интерпретатора, поскольку он ищет совпадение в каждом каталоге на пути поиска исполняемого файла. Он также страдает от той же проблемы, что путь к envдвоичному файлу также может быть разным на каждой машине.

Смотрите также

Ссылки

  1. ^ ab env(1) –  Руководство пользователя Linux – Команды пользователя
  2. ^ ab env(1) –  Руководство по основным командам FreeBSD
Взято с "https://en.wikipedia.org/w/index.php?title=Env&oldid=1251525309"