Echo wird, wenn ich das folgende Skript in Bash 3.2.48 laufen:Variable ist nicht
#!/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
Was ich als Ausgabe zu erhalten ist:
UID=1000
UID=0
var1
Warum ist var2 nicht exportiert und Echo? Ich bin mir ziemlich sicher, dass das gleiche Skript mit älteren Bash-Versionen funktioniert hat.
Danke altblue, ich schätze deine Hilfe sehr. Aber nein, das will ich nicht. Natürlich ist dies nur ein Beispielcode, das echte Skript ist viel länger und der Teil nach der if-Klausel sollte nur einmal ausgeführt werden, nachdem das Skript mit 'sudo $ 0' erneut aufgerufen wurde. Aber ich sehe den Punkt mit sudo jetzt, es funktioniert wirklich mit 'sudo -E $ 0', da var2 dann exportiert wird. Das Seltsame ist, dass dies auf meinem alten System ohne den -E-Schalter funktionierte oder die sudoers-Datei modifiziert hat. Jedenfalls bin ich jetzt glücklich. Danke Jungs. Chris – Chris