De plus, ces variables correspondront-elles toujours au nom d'utilisateur actuellement connecté (elles le sont sur mon système Debian)? Puis-je supposer leur disponibilité dans d'autres systèmes Unix?
Je suis également curieux de savoir pourquoi on utiliserait whoami
plutôt que de simplement lire l'une de ces variables.
USER
et USERNAME
sont des variables d’environnement ordinaires, ce qui signifie que, si vous le souhaitez, vous pouvez les attribuer à des valeurs arbitraires. Il suffit de taper USER=xyz
. En d'autres termes, même si ces variables existent, rien ne garantit que leurs valeurs correspondent au nom d'utilisateur actuellement connecté.
guarantee
, je voulais dire par défaut (c'est-à-dire en supposant que l'utilisateur ne les a pas changés).
sudo whoami
etsudo echo $USER
sudo echo $USER
, le shell se développe $USER
, puis appelle sudo
. Alors bien sûr, cela ne produit pas le même résultat que whoami
. Comme sudo whoami
, sudo sh -c 'echo $USER'
fait (généralement) la sortie root
. En ce qui concerne votre commentaire sur l’ whoami
utilisation de l’EUID , notez que cela sudo whoami
produirait root
même si whoami
l’UID était utilisé. sudo
ensembles à la fois EUID et UID pour la commande il fonctionne (sauf dans le cas très rare que vous configurez explicitement à se comporter autrement). Comparez sudo id -u
à sudo id -ru
.
man
page, vouswhoami
indiquez le nom associé à votre ID utilisateur effectif. Ce qui signifie qu'il retournera quelque chose de différent si vous utilisezsudo
ou exécutez un exécutable setuid. Si vous avezsudo
configuré, essayezsudo whoami
par exemple.