Как я знаю, вновь запущенный скрипт оболочки наследует переменные окружения. Есть ли способ заблокировать это? (запуск оболочки без наследования переменных)
17
Как я знаю, вновь запущенный скрипт оболочки наследует переменные окружения. Есть ли способ заблокировать это? (запуск оболочки без наследования переменных)
Кажется, вы можете добавить к своему сценарию префикс, env -i
который очистит среду перед запуском сценария:
env -i sh test.sh
От man env
:
-i, --ignore-environment
start with an empty environment
Не уверен, почему вы хотели бы сделать это, хотя ...
chsh ...
если я просто открою окно терминала и запустлюzsh
илиfish
(с или без-l
значения), это загрязняет мою среду всеми видами переменных из Оболочка Я начал это. Выполнение трюка сenv -c
решает эту проблему для меня. Я делаюenv -i TERM=xterm-256color $(which fish)
.Одна возможность (хотя это выглядит довольно некрасиво):
exec -c $SCRIPT
запустит $ SCRIPT с пустой средой. (см.man bash
поискexec \[-cl\]
).источник
Насколько я знаю, ответ - «Нет». Вы можете переопределить переменные среды внутри самого скрипта. Значение переменной среды должно вернуться к своему первоначальному значению после завершения работы скрипта. Вероятно, вам нужно запустить скрипт как дочерний процесс: $ this.script.sh &, чтобы избежать необходимости выходить из вашей оболочки каждый раз, когда вы запускаете скрипт, чтобы сбросить переменные среды к их первоначальному значению.
Редактировать:
Из более раннего плаката может показаться, что я ошибаюсь из-за того, что это невозможно.
источник