¿Por qué cuando cambio de usuario su <username>
y luego ejecuto who am i
sale el usuario anterior en el que estaba conectado y no al que he cambiado?
9
Probablemente estés ejecutando el comando incorrecto.
who
está destinado a mostrar quién ha iniciado sesión, es decir, qué usuario posee el terminal. Devuelve una línea como esta:
ckhan pts/1 2012-11-05 03:06 (c-21-13-25-10.ddw.ca.isp.net)
whoami
es para mostrarle cuál es la identificación de usuario efectiva de la persona que lo ejecuta. Devuelve un solo nombre, como este (y es equivalente a la ejecución id -un
):
ckhan
Creo que puede haber escrito literalmente who am i
en la terminal, que se ejecutó who
con dos argumentos ignorados ( am
, i
).
Ver man who
y man whoami
para más detalles.
am
yi
no se ignoran, incluso están especificados por POSIX: "En la configuración regional POSIX, limite la salida para describir al usuario que invoca, equivalente a la-m
opción".Según mi página de manual de Ubuntu 12.04.2 para el comando 'who', 'who am i' (o who con cualquiera de los dos argumentos) es lo mismo que 'who -m' y debería darle el nombre de host y el usuario asociados con STDIN. Sin embargo, no obtengo salida con 'who am i'. O la página del manual es incorrecta o el comando tiene un error. Independientemente, como respondió previamente ckhan, el comando 'whoami' le dará el nombre de usuario para su identificación de usuario efectiva. Al menos en Ubuntu 12.04.2, ninguno de id, 'who am i' o 'whoami' le dará solo el nombre de usuario de la persona que inició sesión en el terminal actual. Como solución alternativa, puede obtener eso con:
fuente
Solución alternativa :
que funciona como reemplazo de
who am i | awk '{print $1}'
. Explicación a continuación:En muchos sistemas "
who am i
" es equivalente a "who -m
". ¡El problema aquí es que con algunos terminales , "who -m
" no devuelve nada!Ejemplo # 1 ejecutado desde un terminal xfce4
pero Ejemplo # 2 desde un terminal gnome (misma computadora, mismos comandos)
Esto parece ser una consecuencia de que gnome-terminal no agrega entradas utmp ...
fuente
stat
lugar:stat -c '%U' "$(tty)"
probablemente tampoco debería analizarwho am i
, ya que los nombres de usuario pueden contener espacios en algunos casos raros.