Команды printenv, env, export, set, unset относятся к командам управления переменными окружения Linux. Они позволяют просматривать значения переменных и устанавливать их значения.
printenv. Фактически printenv это псевдоним env print. Эта команда прозволяет напечатать значения всех переменных (если запустить эту команду без опций), либо только указанной переменной (для этого в командной строке к команде надо добавить имя переменной). Например:
$ printenv SHELL
/bin/bash
Также в командной строке могут быть использованы опции:
-0, --null Эта опция приведет к тому, что при выводе строк списка переменных в конце строк вместо символа новой строки будет символ NUL. Это может пригодиться для программного вызова утилиты в целях автоматизации.
--help Выведет подсказку по командной строке.
--version Выведет версию утилиты printenv.
env. Эта команда запустит программу в модифицированном окружении.
env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]
Команда установит каждую переменную NAME в значение VALUE, и запустит команду COMMAND в новом окружении. Обязательные аргументы для длинных опций являются обязательными также и для коротких опций. Запущенная без опций, команда env просто выведет список переменных окружения, точно так же как и printenv.
Опции env:
-i, --ignore-environment Запустит COMMAND в пустом окружении.
-0, --null Каждая выводимая строка будет заканчиваться на NUL вместо символа новой строки.
-u, --unset=NAME Удалит переменную из окружения.
-C, --chdir=DIR Поменяет рабочую директорию на DIR.
-S, --split-string=S Обработает и разделит S на отдельные аргументы; используется для передачи нескольких аргументов на строках shebang [1]. Это используется в скриптах. Опция -S позволяет указать в скрипте несколько параметров. Запуск скрипта с именем 1.pl, где следующая первая строка:
#!/usr/bin/env -S perl -w -T
...
.. приведет к выполнению perl -w -T 1.pl .
Без '-S' параметр скрипта вероятно будет принят неудачно с ошибкой:
/usr/bin/env: 'perl -w -T': No such file or directory
--block-signal[=SIG] Блокирует передачу сигнала (сигналов) SIG в команду COMMAND.
--default-signal[=SIG] Сбрасывает обработку сигнала (сигналов) SIG в состояние по умолчанию. Эта опция позволяет установить обработчик сигнала в его действие по умолчанию, что невозможно с помощью традиционной команды shell trap. Следующий пример гарантирует, что SIGPIPE завершит команду seq независимо от того, как этот сигнал обрабатывается в процессе, вызывающем команду:
sh -c 'env --default-signal=PIPE seq inf | head -n1'
--ignore-signal[=SIG] Отменяет обработку сигнала (сигналов) SIG.
--list-signal-handling Выведет список обработки сигналов не по умолчанию в stderr.
-v, --debug Выведет подробную информацию по каждому шагу обработки.
--help Отобразит подсказку по командной строке.
--version Напечатает версию команды env.
Указание - подразумевает -i. SIG может быть именем сигнала наподобие 'PIPE', или номером сигнала наподобие '13'. Без SIG подключаются все известные сигналы. Можно указать несколько сигналов через разделитель запятой.
Примечание: страничка документации POSIX exec(2) замечает следующее: "многие существующие приложения ошибочно предполагают, что они запускаются с определенными сигналами, установленными в действие по умолчанию и/или разблокированными. Поэтому лучше не блокировать и не игнорировать сигналы между исполнителями без явных на то причин и особенно не блокировать сигналы между исполнителями произвольных (не тесно взаимодействующих) программ".
export. Установит атрибут экспорта для переменных shell. Пометит каждое NAME для автоматического экспорта в окружение выполняемых впоследствии команд. Если предоставлено значение VALUE, то присвоит VALUE перед экспортом.
export [-fn] [NAME[=VALUE] ...] или export -p
Опции:
-f Относится к функциям shell.
-n Удалит свойство экспорта из каждого NAME.
-p Отобразит список всех экспортированных переменных и функций.
Аргумент -- запретит дальнейшую обработку опций.
Возвратит успех кроме ситуации, когда указана недопустимая опция или недопустимое значение NAME.
set. Команда set установит или отменит установку значений опций shell и позиционных параметров. Позволяет поменять значение shell-атрибутов и позиционных параметров, или отобразить имена и значения shell-переменных.
set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
Опции:
-a Пометит для экспорта переменные, которые изменены или созданы.
-b Немедленно уведомить о прекращении работы.
-e Немедленный выход, если команда завершается с ненулевым статусом.
-f Запрет генерации имени файла (globbing).
-h Запомнить расположение команд при их поиске.
-k Все аргументы назначения помещаются в среду для команды, а не только те, которые предшествуют имени команды.
-m Управление заданиями включено.
-n Прочитать команды, но не выполнять их.
-o option-name Установить переменную соответственно имени опции option-name:
allexport То же самое, что -a
braceexpand То же самое, что -B
emacs Использовать интерфейс редактирования строки в стиле emacs
errexit То же самое, что -e
errtrace То же самое, что -E
functrace То же самое, что -T
hashall То же самое, что -h
histexpand То же самое, что -H
history Разрешить историю команд
ignoreeof Оболочка не будет закрыта при чтении EOF interactive-comments позволяют comments появляться в интерактивных командах
keyword То же самое, что -k
monitor То же самое, что -m
noclobber То же самое, что -C
noexec То же самое, что -n
noglob То же самое, что -f
nolog Сейчас принимается, но игнорируется
notify То же самое, что -b
nounset То же самое, что -u
onecmd То же самое, что -t
physical То же самое, что -P
pipefail Возвращаемое значение конвейера является статусом последней команды для выхода с ненулевым статусом или равно нулю, если ни одна команда не вышла с ненулевым статусом
posix Изменить поведение bash там, где операция по умолчанию отличается от стандарта Posix, чтобы соответствовать стандарту
privileged То же самое, что -p
verbose То же самое, что -v
vi Использовать интерфейс редактирования строки в стиле vi
xtrace То же самое, что -x
-p Включается всякий раз, когда реальные и эффективные идентификаторы пользователей не совпадают. Отключает обработку файла $ENV и импорт функций оболочки. Отключение этой опции приводит к тому, что для эффективных uid и gid устанавливаются значения real uid и gid.
-t Выход после чтения и выполнения одной команды.
-u При подстановке не заданные переменные рассматриваются как ошибка.
-v Печать входных строк shell при их чтении.
-x Печать команд и их аргументов по мере их выполнения.
-B shell выполнит расширение фигурных скобок.
-C Если установлено, запретить перезапись существующих обычных файлов путем перенаправления вывода.
-E Если установлено, то ERR trap наследуется shell-функциями.
-H Разрешает !-стиль замещения истории. Этот флаг действует по умолчанию, когда shell интерактивный.
-P Если установлено, то не разрешать символические ссылки, когда выполняются такие команды как cd, которые меняют текущую директорию.
-T Если установлено, то trap-ы DEBUG и RETURN наследуются shell-функциями.
-- Назначает любые остальные аргументы позиционным параметрам. Если нет остальных параметров, то позиционные параметры остаются не установленными.
- Назначает любые остальные аргументы позиционным параметрам. Опции -x и -v выключены.
Использование + вместо - приводит к тому, что эти флаги выключаются. Флаги также могут использоваться при вызове shell-а. Текущий набор флагов можно найти в $-. Оставшиеся n ARG-ов это позиционные параметры, и они присваиваются по порядку $1, $2, .. $n. Если ARG-ы не указаны, то будут напечатаны все переменные shell-а.
Статус выхода: возвратит успех за исключением ситуации, когда указана недопустимая опция.
unset. Команда unset позволяет удалить экспортированную переменную. Пример:
$ export NO_PYTHON=1
$ printenv | grep PYTHON
NO_PYTHON=1
$ unset NO_PYTHON
$ printenv | grep PYTHON
$
[Ссылки]
1. Different Types of Shebang in Linux site:baeldung.com. |