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 whoami
lugar de simplemente leer cualquiera de estas variables.
USER
y USERNAME
son 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 whoami
ysudo 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 whoami
uso del EUID , tenga en cuenta que sudo whoami
se generarároot
incluso si se whoami
usa el UID. sudo
establece 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 -u
a sudo id -ru
.
man
página,whoami
informa el nombre asociado con su identificación de usuario efectiva. Lo que significa que devolverá algo diferente si está utilizandosudo
o ejecutando un ejecutable setuid. Si hasudo
configurado, intentesudo whoami
por ejemplo.