Передать все переменные окружения в скрипт sudo - PullRequest
0 голосов
/ 24 августа 2018

У меня есть один сценарий оболочки, который вызывает другой с помощью sudo, например: test1.sh:

#! /bin/sh
echo "In test1"
UVAR=bar
echo "UVAR=${UVAR}"
sudo ./test2.sh
echo "In test1 - after call to test2"
echo "UVAR=${UVAR}"

и test2.sh:

#! /bin/sh
echo "In test2"
whoami
echo "UVAR=${UVAR}"
UVAR=baz
echo "UVAR=${UVAR}"
echo "leaving test2"

Я могу сделать отдельные переменные из test1.sh (например, UVAR) доступными в test2.sh, поставив UVAR=$UVAR перед вызовом sudo, но что, если я хочу, чтобы это было для все переменные? Явное именование всех переменных в вызове test2.sh становится непрактичным (тем более, что у меня нет прямого контроля над тем, какие переменные могут присутствовать на практике). Если бы я не позвонил test2.sh с sudo (это необходимо в реальной проблеме), я мог бы просто набрать test2.sh.

Дополнительный бонус - это способ, который позволяет мне защитить test1.sh от изменений переменных, сделанных в test2.sh, т.е. в примере вторая строка, выводящая UVAR в test1.sh, должна дать тот же результат, что и первый.

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

...