env -i: запуск программы в полностью “чистом” окружении
Большинство программ наследуют десятки переменных окружения: PATH, HOME, LANG, LD_LIBRARY_PATH, прокси, токены и многое другое.
Иногда именно они становятся причиной странного поведения приложения.
▪️Посмотреть текущее окружение
env
или:
printenv
Вы увидите все переменные, которые будут унаследованы дочерними процессами.
▪️Запуск без окружения
Команда:
env -i bash
запустит новый Bash практически без переменных окружения.
Если выполнить:
env
вывод окажется пустым или почти пустым.
▪️Передать только нужные переменные
Например:
env -i PATH=/usr/bin:/bin HOME=/tmp bash
Теперь программа получит только PATH и HOME.
Это особенно удобно при поиске ошибок.
▪️Практический пример
Есть скрипт:
./deploy.sh
У одного пользователя он работает, у другого - нет.
Проверяем:
env -i PATH=/usr/bin:/bin ./deploy.sh
Если проблема исчезла или, наоборот, воспроизвелась, причина, скорее всего, в одной из переменных окружения, а не в самом скрипте.
▪️Где ещё используется
• отладка CI/CD;
• проверка зависимостей от окружения;
• запуск сервисов в предсказуемых условиях;
• поиск проблем с PATH, LANG, HOME и прокси.
▪️Почему это важно
Ошибки, связанные с окружением, часто трудно воспроизвести: скрипт работает у одного администратора и ломается у другого. env -i позволяет полностью исключить влияние наследуемых переменных и быстро понять, зависит ли программа от окружения больше, чем кажется.
BashTex 📱 #bash #linux
Большинство программ наследуют десятки переменных окружения: PATH, HOME, LANG, LD_LIBRARY_PATH, прокси, токены и многое другое.
Иногда именно они становятся причиной странного поведения приложения.
▪️Посмотреть текущее окружение
env
или:
printenv
Вы увидите все переменные, которые будут унаследованы дочерними процессами.
▪️Запуск без окружения
Команда:
env -i bash
запустит новый Bash практически без переменных окружения.
Если выполнить:
env
вывод окажется пустым или почти пустым.
▪️Передать только нужные переменные
Например:
env -i PATH=/usr/bin:/bin HOME=/tmp bash
Теперь программа получит только PATH и HOME.
Это особенно удобно при поиске ошибок.
▪️Практический пример
Есть скрипт:
./deploy.sh
У одного пользователя он работает, у другого - нет.
Проверяем:
env -i PATH=/usr/bin:/bin ./deploy.sh
Если проблема исчезла или, наоборот, воспроизвелась, причина, скорее всего, в одной из переменных окружения, а не в самом скрипте.
▪️Где ещё используется
• отладка CI/CD;
• проверка зависимостей от окружения;
• запуск сервисов в предсказуемых условиях;
• поиск проблем с PATH, LANG, HOME и прокси.
▪️Почему это важно
Ошибки, связанные с окружением, часто трудно воспроизвести: скрипт работает у одного администратора и ломается у другого. env -i позволяет полностью исключить влияние наследуемых переменных и быстро понять, зависит ли программа от окружения больше, чем кажется.
BashTex 📱 #bash #linux