В Linux команда env
позволяет отображать текущую среду или запускать указанную команду в изменённой среде.
Содержание
Описание
Команда env
является командой оболочки для Unix-подобных операционных систем. Она используется либо для печати списка переменных среды, либо для запуска другой утилиты в изменённой среде без необходимости изменения существующей среды.
Используя утилиту, переменные могут быть добавлены или удалены, а существующие переменные могут быть изменены путём присвоения им новых значений. На практике у команды есть ещё одно распространённое применение. Она часто используется сценариями оболочки для запуска правильного интерпретатора. При таком использовании среда обычно не изменяется.
Если env
запускается без каких-либо параметров, то утилита печатает переменные текущей среды. В противном случае утилита устанавливает каждое ИМЯ в ЗНАЧЕНИЕ и выполняет КОМАНДУ.
Синтаксис
$ env [ПАРАМЕТР]… [-] [ИМЯ=ЗНАЧЕНИЕ]… [КОМАНДА [АРГ]…]
Параметры
- -i, --ignore-environment
- Начать с пустым окружением
- -0, --null
- Завершать каждую выводимую строку
NUL
, а не символом новой строки - -u, --unset=ИМЯ
- Удалить переменную с ИМЕНЕМ из окружения
- -C, --chdir=КАТ
- Изменить рабочий каталог на КАТ
- -S, --split-string=S
- Обработать и разделить
S
на отдельные аргументы; используется для указания нескольких аргументов в строках с#!
- --block-signal[=SIG]
- Блокировать доставку сигнала(ов) SIG
- --default-signal[=SIG]
- Сбросить обработку сигнала(ов) SIG в значение по умолчанию
- --ignore-signal[=SIG]
- Назначить обработке сигнала(ов) SIG пустое значение
- --list-signal-handling
- Выдать обработчики сигнала, отличные от значений по умолчанию, в
stderr
- -v, --debug
- Выводить подробную информацию на каждом шаге обработки
- --help
- Показать эту справку и выйти
- --version
- Показать информацию о версии и выйти
Просто -
— синоним для -i
. Если не задана КОМАНДА, то печатает получившееся (имеющееся в наличии) окружение.
SIG может быть именем сигнала, например «PIPE», или номером сигнала, например «13». Без SIG включаются все известные сигналы. Несколько сигналов могут быть разделены запятыми. Пустой аргумент SIG означает отсутствие операции.
Использование команды env в Linux
Запуск команды без параметров
При запуске без параметров команда env
отобразит текущую среду.
[root@mobile ~]# env
SHELL=/bin/bash
COLORTERM=truecolor
SUDO_GID=984
SUDO_COMMAND=/usr/bin/su
SUDO_USER=oleg
PWD=/root
LOGNAME=root
XAUTHORITY=/home/oleg/.Xauthority
HOME=/root
LANG=ru_RU.utf8
TERM=xterm-256color
USER=root
DISPLAY=:0.0
SHLVL=1
PS1=[\u@\h \W]\$
PATH=”/home/oleg/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl”
SUDO_UID=1000
MAIL=/var/mail/root
OLDPWD=/home/oleg
_=/usr/bin/env
[root@mobile ~]#
Очистка среды
Для очистки среды (создание новой среды без каких-либо существующих переменных среды) для новой оболочки команда запускается с опцией -i
:
[root@mobile ~]# env -i /bin/sh
sh-5.1#
Установка переменной среды
[root@mobile ~]# env LOGPATH=/var/logOGPATH=/var/log
SHELL=/bin/bash
WINDOWID=8388610
COLORTERM=truecolor
GREP_COLOR=1;33
XDG_SEAT=seat0
PWD=/home/oleg
LOGNAME=oleg
XDG_SESSION_TYPE=x11
GREP_OPTIONS=--color=auto
XAUTHORITY=/home/oleg/.Xauthority
RAWWAVE_PATH=/usr/share/stk/rawwaves
MOTD_SHOWN=pam
HOME=/home/oleg
LANG=ru_RU.utf8
VTE_VERSION=7202
OPCODE6DIR=/usr/lib/csound/plugins64-6.0
XDG_SESSION_CLASS=greeter
TERM=xterm-256color
USER=oleg
CSSTRNGS=/usr/share/locale
DISPLAY=:0.0
SHLVL=4
XDG_VTNR=7
XDG_SESSION_ID=1
XDG_RUNTIME_DIR=/run/user/1000
PS1=\[\e[1;32;40m\u\e[1;36;40m@\e[1;32;40m\H:\e[1;37;40m\w:\e[1;31;40m\$\e[0m\]
DEBUGINFOD_URLS=https://debuginfod.archlinux.org
PATH=”/home/oleg/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl”
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
MAIL=/var/mail/oleg
_=/usr/bin/env
OLDPWD=/var
LOGPATH=/var/log
Горное время
Для установки горного времени (горного часового пояса Северной Америки) утилита используется так:
[root@mobile ~]# env TZ=MST7MDT date Чт 29 июн 2023 03:40:12 MDT [root@mobile ~]#
По завершении работы команды date
предыдущее значение переменной среды TZ
снова вступает в силу.
Статус ошибок
Статус выхода:
- 125
- Если сама команда не работает
- 126
- Если команда найдена, но не может быть вызвана
- 127
- Если команда не найдена
- -
- Статус выхода команды в остальных случаях
Заключение
Начинающим пользователям Linux команда env
в работе с командной строкой, скорее всего, не понадобится. По мере приобретения опыта пользователь поймёт, что этот инструмент очень удобен во многих ситуациях.