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 whoamiplutôt que de simplement lire l'une de ces variables.
USERet USERNAMEsont 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 whoamietsudo 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’ whoamiutilisation de l’EUID , notez que cela sudo whoamiproduirait rootmême si whoamil’UID était utilisé. sudoensembles à 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.
                
manpage, vouswhoamiindiquez le nom associé à votre ID utilisateur effectif. Ce qui signifie qu'il retournera quelque chose de différent si vous utilisezsudoou exécutez un exécutable setuid. Si vous avezsudoconfiguré, essayezsudo whoamipar exemple.