Ich möchte ein Bash-Skript erstellen, das mit sudo ausgeführt werden muss, aber den Namen des Nicht-sudo-Benutzers berücksichtigen soll, der es ausgeführt hat. Also, wenn der Benutzer bob
läuft, sudo ./myscript.sh
würde ich gerne myscript.sh
wissen, bob
wer es ausgeführt hat.
Schauen wir mal rein myscript.sh
:
USER=$(whoami)
# Do something that takes into account the username.
Wie kann ich den Namen des Benutzers erfahren, der den Prozess ausgelöst hat? Genauer gesagt, was soll ich verwenden, anstatt whoami
zu bekommen bob
und nicht root
?
#!/usr/bin/env bash
meinen Bash-Skripten einen solchen Hashbang hinzugefügt .
sh
oder etwas anderem aufrufen .
USER=$(whoami)
. Beachten Sie, dass dieUSER
bereits als Shell-interne Variable existiert. Wenn es sich um ein Bash-Skript handelt, sollten Sie es nicht mit ausführen, da essh
nur eine POSIX-kompatible Teilmenge von Funktionen enthält.