をエコーされていません。変数は
#!/bin/bash
export var1='var1'
echo "UID=$UID"
if [ x"$UID" != x"0" ]
then
export var2='var2'
while ! { sudo -v; }; do { sudo -v; }; done;
sudo $0
exit
fi
echo $var1
echo $var2
exit 0
私は出力として得るものです:
UID=1000
UID=0
var1
エクスポートおよびエコーされませんVAR2れるのはなぜ?同じスクリプトが古いBashバージョンで動作することは間違いありません。
altblueありがとう、本当にありがとうございます。しかし、それは私が望むものではありません。これはサンプルコードだけですが、実際のスクリプトはずっと長く、if節の後の部分は 'sudo $ 0'でスクリプトを再呼び出しした後で一度だけ実行する必要があります。しかし、私は今、sudoとのポイントを見て、実際には 'sudo -E $ 0'で動作します。なぜなら、var2がエクスポートされるからです。奇妙なことは、これが私の古いシステムで-Eスイッチなしで動作すること、またはsudoersファイルを変更することです。とにかく、私は今幸せです。君たちありがとう。 Chris – Chris