Además, ¿estas variables siempre coincidirán con el nombre de usuario actualmente conectado (lo hacen en mi sistema Debian)? ¿Puedo asumir su disponibilidad en otros sistemas Unix (similares)?
También tengo curiosidad de por qué uno usaría en whoamilugar de simplemente leer cualquiera de estas variables.
USERy USERNAMEson variables de entorno ordinarias, lo que significa que, si lo desea, puede establecerlas en valores arbitrarios. Solo escribe USER=xyz. En otras palabras, incluso si esas variables existen, no hay garantía de que sus valores coincidan con el nombre de usuario actualmente conectado.
guarantee, quise decir por defecto (es decir, suponiendo que el usuario no los cambió).
sudo whoamiysudo echo $USER
sudo echo $USER, el shell se expande $USER, luego llama sudo. Por supuesto, no produce el mismo resultado que whoami. Como sudo whoami, sudo sh -c 'echo $USER'hace (típicamente) salida root. Con respecto a su comentario sobre el whoamiuso del EUID , tenga en cuenta que sudo whoamise generarároot incluso si se whoamiusa el UID. sudoestablece tanto EUID como UID para el comando que ejecuta (excepto en la situación muy inusual en la que lo configura explícitamente para que se comporte de otra manera). Comparar sudo id -ua sudo id -ru.
manpágina,whoamiinforma el nombre asociado con su identificación de usuario efectiva. Lo que significa que devolverá algo diferente si está utilizandosudoo ejecutando un ejecutable setuid. Si hasudoconfigurado, intentesudo whoamipor ejemplo.