Самоучитель по командам env в Linux для начинающих (5 примеров)

Linux команда env используется для отображения и управления переменными окружения в сеансе оболочки. Переменные окружения – это динамические значения, которые влияют на процессы или программы, запущенные в оболочке, такие как пути к исполняемым файлам, настройки, специфичные для пользователя, и поведение системы. Выполнив команду env без аргументов, вы получите список всех текущих переменных окружения и их значений. Кроме того, env можно использовать для выполнения команды с измененным окружением, временно устанавливая или переопределяя определенные переменные окружения на время выполнения команды. Это полезно для тестирования или запуска программ в определенном окружении без изменения глобальной конфигурации.

Но перед этим стоит отметить, что все команды и инструкции в этом руководстве были протестированы на Debian 12 и Ubuntu 24.04.

Команда Linux env

По определению, команда env позволяет запустить программу в измененном окружении. Ниже приведен синтаксис команды, как указано на ее man-странице:

env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]

А вот что говорится на странице man о команде env:

Set each NAME to VALUE in the environment and run COMMAND.

Следующие примеры в стиле Q&A должны дать вам лучшее представление о том, как работает эта команда:

Q1. Как получить доступ ко всем переменным окружения с помощью команды env?

Окружение Bash, как вы, возможно, уже знаете, состоит из записей VARNAME=VALUE. Чтобы получить доступ ко всем переменным окружения, а также к связанным с ними значениям, выполните команду env без каких-либо опций.

env

Вот вывод вышеуказанной команды в нашем случае:

Как получить доступ ко всем переменным окружения с помощью команды env

Q2. Как временно изменить окружение с помощью команды env?

Ключевой особенностью env является возможность временного изменения окружения процесса. Например, мы создали небольшой исполняемый файл, названный env, который при выполнении отображает значение переменной окружения USER.

Вот вывод в обычном сценарии:

Как временно изменить окружение с помощью env

Итак, мы использовали команду env, чтобы временно изменить значение переменной окружения USER с ‘himanshu’ на ‘HTF’ для исполняемого файла/процесса. Ниже приведена команда, которую мы использовали в этом случае:

env USER=HTF ./env

А вот вывод, полученный в этом случае:

вывод команды env

Таким образом, вы видите, что исполняемый файл вернул новое значение.

Примечание: Как подсказывает общий синтаксис инструмента, вы можете изменить значения нескольких переменных окружения и заставить процесс использовать эти новые значения.

Q3. Как заставить процесс игнорировать существующее окружение с помощью env?

Если вы хотите, вы можете заставить процесс игнорировать существующее/наследуемое окружение и начинать с пустого. Это можно сделать с помощью функции -i или –ignore-environment опция.

Например:

Как заставить процесс игнорировать существующее окружение с помощью env

Q4. Как заставить env использовать NUL вместо символа новой строки при выводе?

В первом примере, который мы рассмотрели выше, выходные строки, выдаваемые env, разделяются символом новой строки. Однако, если вы хотите, вы можете заставить env использовать символ NUL в качестве разделителя. Эту возможность можно получить с помощью функции –null опция командной строки.

env --null

Ниже приведен пример снимка экрана;

Как заставить env использовать NUL вместо символа новой строки в выводе

Q5. Как узнать ошибку по статусу выхода команды env?

Команда env выдает следующие коды выхода: 0, 125, 126 и 127. Ниже приведены описания соответствующих ошибок:

0   if no COMMAND is specified and the environment is output
125 if ‘env’ itself fails
126 if COMMAND is found but cannot be invoked
127 if COMMAND cannot be found

Если вы получаете код ошибки, отличный от вышеупомянутых, это статус выхода, возвращенный процессом/командой, которая была выполнена с измененным окружением.

Заключение

Если вы совсем новичок в командной строке, то, скорее всего, этот инструмент не понадобится вам ежедневно. Однако это не значит, что о нем не стоит знать – на самом деле env пригодится вам во многих ситуациях. Примеров, которые мы привели в этом руководстве, должно быть достаточно, чтобы дать вам начало. Для получения более подробной информации обратитесь к разделу команды man-страница, а лучше выполните следующую команду:

info coreutils env invocation

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *