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 que jon
, mon nom d’utilisateur, soit imprimé. Y a-t-il un moyen de le faire en changeant le script et non la commande?
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
man sudo
, dans la section “ENVIRONNEMENT”:
SUDO_USER Set to the login name of the user who invoked sudo.
La page de manuel décrit également d’autres variables d’environnement associées définies par sudo
qui peuvent s’avérer utiles, telles que SUDO_UID
et SUDO_GID
Obtenir $ USER dans un script shell lors de l’exécution avec sudo?