Posso acessar a variável $ USER de origem a partir de um script executado com `sudo`?

19

Uma pergunta estranha, eu sei. Aqui está o script:

echo $USER

Aqui está o comando que eu uso para executá-lo:

sudo ./myscript.sh

No momento, ele imprime "root", mas eu quero que ele imprima jon, meu nome de usuário. Existe uma maneira de fazer isso alterando o script, e não o comando?

Jonathan
fonte
Sim, existem maneiras de fazer isso. Mas talvez a maneira mais fácil seja uma solução alternativa. Chame esse script de outro script, onde você 'salvará' seu ID de usuário para que o 'script sudo' possa acessá-lo.
sudodus 31/12/16

Respostas:

28

Use a SUDO_USERvariável de ambiente em vez de USER.

sudocoloca o nome do usuário que o executou na SUDO_USERvariável de ambiente:

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

Então você pode simplesmente substituir $USERpor $SUDO_USERno seu script:

echo $SUDO_USER

Leitura adicional

Eliah Kagan
fonte