Eine seltsame Frage, ich weiß. Hier ist das Skript:
echo $USER
Hier ist der Befehl, den ich verwende, um es auszuführen:
sudo ./myscript.sh
Im Moment gibt es "root" aus, aber ich möchte, dass es jon
meinen Benutzernamen ausgibt. Gibt es eine Möglichkeit, das Skript und nicht den Befehl zu ändern?
command-line
bash
sudo
environment-variables
Jonathan
quelle
quelle
Antworten:
Verwenden Sie die
SUDO_USER
Umgebungsvariable anstelle vonUSER
.sudo
Fügt den Namen des Benutzers, der ihn ausgeführt hat, in dieSUDO_USER
Umgebungsvariable ein:So können Sie in Ihrem Skript einfach ersetzen
$USER
durch$SUDO_USER
:Weitere Lektüre
man sudo
Im Abschnitt "UMWELT":Die Manpage beschreibt auch einige andere verwandte Umgebungsvariablen
sudo
, die sich als nützlich erweisen können, wie z. B.SUDO_UID
undSUDO_GID
Bekommen Sie $ USER im Shell-Skript, wenn Sie mit sudo laufen?
quelle