окружение
Операционная система | Unix , Unix-подобные , Inferno |
---|---|
Платформа | Кросс-платформенный |
Тип | Команда |
Лицензия | основные утилиты : 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
Чтобы создать новую среду без каких-либо существующих переменных среды для новой оболочки:
env -i /bin/sh
Чтобы выполнить X приложение xcalc и отобразить его на другом дисплее (т. е. в измененной среде, если указанная переменная среды заменена новым значением):
env DISPLAY=foo.bar:1.0 xcalc
Обратите внимание, что такое использование env часто не является необходимым, поскольку большинство оболочек поддерживают установку переменных среды перед командой:
DISPLAY=foo.bar:1.0 xcalc
env также можно использовать в строке хеш-банга сценария, чтобы разрешить интерпретатора поиск через PATH. Например, вот код скрипта Python :
#!/usr/bin/env python3
print("Hello, World!")
В этом примере /usr/bin/env
полный путь это env
команда. Окружающая среда не изменена.
Обратите внимание, что можно указать интерпретатор, не используя env
, указав полный путь python
устный переводчик. Проблема с этим подходом заключается в том, что в разных компьютерных системах точный путь может быть разным. Вместо этого используя env
как и в примере, интерпретатор ищется и находится в момент запуска скрипта (точнее, env
выполняет системный вызов execvp
, который выполняет поиск интерпретатора и его запуск). Это делает сценарий более переносимым , но также увеличивает риск того, что будет выбран неправильный интерпретатор, поскольку он ищет совпадение в каждом каталоге на пути поиска исполняемого файла. Он также страдает от той же проблемы, заключающейся в том, что путь к env
двоичный файл также может отличаться для каждой машины.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б Linux пользователя Руководство – Пользовательские команды –
- ^ Jump up to: а б FreeBSD по основным командам Руководство –
Внешние ссылки
[ редактировать ]
- Единая спецификация UNIX , версия 4 от The Open Group : установка среды для вызова команд – Справочник по оболочке и утилитам,
- Inferno по общим командам Руководство –
- env — страница руководства GNU coreutils .
- FreeBSD по основным командам Руководство –
- OpenBSD по основным командам Руководство : запустить программу в измененной среде –
- NetBSD по общим командам Руководство : установка и печать среды –
- Linux пользователя Руководство – Пользовательские команды –
- Solaris 11.4 по пользовательским командам Справочное руководство –