web-dev-qa-db-fra.com

Puis-je accéder à la variable $ USER d'origine à partir d'un script exécuté avec `Sudo`?

Une question étrange, je sais. Voici le script:

echo $USER

Voici la commande que j'utilise pour l'exécuter:

Sudo ./myscript.sh

Pour le moment, il affiche "root" mais je veux qu'il imprime jon, mon nom d'utilisateur. Y a-t-il un moyen de le faire en modifiant le script et non la commande?

19
Jonathan

Utilisez la variable d'environnement Sudo_USER au lieu de USER.

Sudo place le nom de l'utilisateur qui l'a exécuté dans la variable d'environnement Sudo_USER:

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

Vous pouvez donc simplement remplacer $USER par $Sudo_USER dans votre script:

echo $Sudo_USER

Lectures complémentaires

28
Eliah Kagan