Полное руководство по команде env в Linux

Коллекция команд Linux

env — очень практичный инструмент командной строки в системах Linux/Unix, в основном используется для отображения и изменения переменных окружения, а также для запуска программ в пользовательской среде.

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

Аналогия: представьте переменные окружения как доску объявлений в офисе. Все сотрудники (программы) могут видеть на ней информацию (переменные окружения) и корректировать свой стиль работы на основе этой информации.


Базовый синтаксис команды env

Базовый формат синтаксиса команды env выглядит следующим образом:

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

Если запустить её напрямую без каких-либо параметровenv, она выведет все текущие переменные среды и их значения.


Общие опции и параметры

Команда env поддерживает следующие общие опции:

Опция Описание
-i, --ignore-environment Начать с пустой среды, игнорируя унаследованные переменные среды
-u, --unset=NAME Удалить указанные переменные из среды
-C, --chdir=DIR Перейти в указанный каталог перед запуском команды
-S, --split-string=S Разделить аргументы на несколько аргументов
--help Показать справочную информацию
--version Показать информацию о версии

Основные примеры использования

1. Просмотр всех переменных среды

Простейший вариант использования — напрямую ввестиenvкоманда:

Пример

env

Это выведет все переменные среды в текущей оболочке в форматеVariable name=value, например:

USER=john
HOME=/home/john
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2. Запуск команд в пользовательской среде

Вы можете временно установить переменные окружения для запуска программы:

Пример

env LANG=C ls

В этом примере мы временно устанавливаемLANG=Cа затем запускаемlsкоманду, которая повлияет наlsязык вывода команды.

3. Создайте чистое окружение для запуска программ

Используйте-iопция для создания чистого окружения (без наследования каких-либо существующих переменных окружения):

Пример

env -i PATH=/bin:/usr/bin ls

Здесь мы создали чистое окружение только сPATHпеременной для запускаlsкоманды.


Продвинутое использование

1. Временно измените переменные для запуска скриптов

Пример

env EDITOR=nano crontab -e

Эта команда временно установитEDITORпеременную среды вnano, затем запуститcrontab -e, которая будет использовать редактор nano для редактирования crontab.

2. Удалите определённые переменные среды

Пример

env -u HOME ls

Эта команда при запускеlsудалитHOMEпеременную среды.

3. Использование с shebang

env часто используется в строке shebang скриптов, чтобы сделать их более переносимыми:

Пример

#!/usr/bin/env bash

Этот подход более гибок, чем прямое указание/bin/bashболее гибок, потому что он будетPATHискать расположение bash в переменной окружения.


Практические сценарии применения

1. Отладка проблем с переменными окружения

Когда программа ведёт себя ненормально, можно использовать env для проверки её среды выполнения:

Пример

env -i /путь/к/программе

Это позволяет исключить влияние переменных окружения и определить, вызвана ли проблема переменными окружения.

2. Безопасный запуск недоверенных скриптов

При запуске скриптов неизвестного происхождения можно создать ограниченную среду:

Пример

env -i PATH=/bin:/usr/bin /путь/к/script.sh

3. Тестирование поведения программы в различных средах локали

Пример

env LANG=fr_FR.UTF-8 program
env LANG=zh_CN.UTF-8 program

Это позволяет тестировать поведение программы в различных локалях/языковых средах.


Примечания

  1. Перезапись переменных: Переменные, заданные через env, перезапишут существующие переменные окружения с тем же именем.
  2. Влияние на дочерние процессы: Переменные окружения, изменённые с помощью env, влияют только на дочерние процессы, которые запускает env, а не на текущую оболочку.
  3. Безопасность: Конфиденциальную информацию (например, пароли) не следует передавать через переменные окружения.
  4. Порядок переменных: Переменные, заданные позже, перезапишут переменные с тем же именем, заданные раньше.

Коллекция команд Linux

Другие расширения