将所有环境变量传递给sudo'ed脚本

时间:2018-08-24 14:20:06

标签: linux bash shell sudo

我有一个Shell脚本使用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.shUVAR=$UVAR(例如sudo)中的单个变量可用,但是如果我希望它用于 all 变量?在对test2.sh的调用中明确命名所有变量变得不切实际(特别是因为我无法直接控制实际中可能存在哪些变量)。如果我没有用test2.sh来调用sudo(这在实际问题中是必须的),那么我可以仅提供test2.sh的源代码。

额外的好处是,我可以保护test1.sh免受test2.sh中所做的变量的更改,即在示例中,第二行在{{1}中输出UVAR }的结果应该与第一个相同。

(我正在用bash进行标记,因为脚本目前使用bash,但是如果可以用其他shell解决它,我很想知道,如果只需要对脚本进行少量更改可以考虑用其他东西代替bash)

0 个答案:

没有答案