Posso accedere alla variabile $ USER originaria da uno script eseguito con `sudo`?


19

Una domanda strana, lo so. Ecco la sceneggiatura:

echo $USER

Ecco il comando che uso per eseguirlo:

sudo ./myscript.sh

In questo momento stampa "root" ma lo voglio stampare jon, il mio nome utente. C'è un modo per farlo modificando lo script e non il comando?


Sì, ci sono modi per farlo. Ma forse il modo più semplice è una soluzione. Chiama quello script da un altro script, dove "salvi" il tuo ID utente in modo che lo "script sudo" possa accedervi.
sudodus,

Risposte:


28

Utilizzare la SUDO_USERvariabile di ambiente anziché USER.

sudoinserisce il nome dell'utente che lo ha eseguito nella SUDO_USERvariabile di ambiente:

ek@Io:~$ sudo sh -c 'echo $USER'
[sudo] password for ek:
root
ek@Io:~$ sudo sh -c 'echo $SUDO_USER'
ek

Quindi puoi semplicemente sostituirlo $USERcon $SUDO_USERnel tuo script:

echo $SUDO_USER

Ulteriori letture

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.