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

18

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

echo $USER

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

sudo ./myscript.sh

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

    
por Jon 31.12.2016 / 20:08

1 resposta

26

Use a variável de ambiente SUDO_USER em vez de USER .

sudo coloca o nome do usuário que o executou na variável de ambiente SUDO_USER :

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

Você pode simplesmente substituir $USER por $SUDO_USER no seu script:

echo $SUDO_USER

Leitura Adicional

por Eliah Kagan 31.12.2016 / 20:23