Администрирование FreeBSD, Linux, ... Команды управления переменными окружения Linux Sun, December 08 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Команды управления переменными окружения Linux Печать
Добавил(а) microsin   

Команды 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.

 

Добавить комментарий


Защитный код
Обновить

Top of Page