Posso accedere alla variabile $ USER di origine da uno script eseguito con 'sudo'?

19

Una domanda strana, lo so. Ecco lo script:

echo $USER

Ecco il comando che uso per eseguirlo:

sudo ./myscript.sh

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

    
posta Jon 31.12.2016 - 20:08

1 risposta

27

Utilizza la variabile di ambiente SUDO_USER anziché USER .

sudo posiziona il nome dell'utente che lo ha eseguito nella variabile di ambiente SUDO_USER :

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

Quindi puoi semplicemente sostituire $USER con $SUDO_USER nel tuo script:

echo $SUDO_USER

Ulteriori letture

risposta data Eliah Kagan 31.12.2016 - 20:23

Leggi altre domande sui tag