Команда env

Опубликовано admin - чт, 06/29/2023 - 13:46

В Linux команда env позволяет отображать текущую среду или запускать указанную команду в изменённой среде.

Примеры использования команды env в Linux

Содержание

Описание

Команда 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 в работе с командной строкой, скорее всего, не понадобится. По мере приобретения опыта пользователь поймёт, что этот инструмент очень удобен во многих ситуациях.

Поделиться с друзьями