Chcę utworzyć skrypt bash, który musi zostać wykonany za pomocą sudo, ale powinien uwzględniać nazwę użytkownika niebędącego sudo, który go wykonał. Więc jeśli użytkownik bob
uruchomi sudo ./myscript.sh
, chciałbym myscript.sh
wiedzieć, że bob
to on go wykonał.
Zajrzyjmy do środka myscript.sh
:
USER=$(whoami)
# Do something that takes into account the username.
Jak poznać nazwę użytkownika, który utworzył proces? Mówiąc dokładniej, czego powinienem użyć zamiast, whoami
aby dostać, bob
a nie root
?
#!/usr/bin/env bash
na moich skryptach bash.
sh
lub czegoś innego.
USER=$(whoami)
. Zauważ, żeUSER
już istnieje jako wewnętrzna zmienna powłoki. Ponadto, jeśli jest to skrypt bash, nie uruchamiaj go przy użyciush
, który ma tylko podzbiór funkcji zgodny z POSIX.