¿Cómo obtengo el nombre del usuario activo a través de la línea de comando en OS X?

94

¿Cómo obtengo el nombre del usuario activo a través de la línea de comando en OS X?

Lawrence Johnston
fuente

Respuestas:

197

como 'whoami' ha quedado obsoleto, probablemente sea más compatible con el futuro:

id -un
Kent
fuente
2
¿En qué sentido está obsoleto 'whoami'? ¿Quién lo ha declarado obsoleto?
Jonathan Leffler
2
@Jonathan: La página de manual de whoamiLeopard confirma que ha sido reemplazada por id.
Naaff
¡Agh! ¿Por qué están cambiando algo que ha existido desde los albores de los tiempos?
dmckee --- ex-moderador gatito
29
¿quien soy yo para decir? <boom-chacka>
kent
27

Si desea mostrar el nombre completo (en lugar del nombre de usuario), agregue la -Fbandera:

$ id -F
Andrew Havens
Andrés
fuente
1
-F es una opción ilegal en Mavericks: ¿cuándo comenzó a funcionar?
Eli B.
11

quién soy

EDITAR

La utilidad whoami ha quedado obsoleta por la utilidad id (1) y es equivalente a id -un. El comando id -pse sugiere para uso interactivo normal.

dfa
fuente
11

Estoy bastante seguro de que el terminal en OS X es como Unix, por lo que el comando sería:

whoami

No tengo una Mac en este momento, así que alguien me corrija si me equivoco.

NOTA: La whoamiutilidad ha quedado obsoleta y es equivalente a id -un. Te dará el usuario actual

Eric Koslow
fuente
10

Vía aquí

Verificar el propietario de / dev / console parece funcionar bien.

stat -f "%Su" /dev/console

Lawrence Johnston
fuente
1
Esto funciona muy bien si está conectado a una máquina y desea ver si un usuario ha iniciado sesión localmente. Si no es así, el comando devolverá "root".
Tim Dearborn
4

Si desea saber quién está conectado actualmente al sistema:

$ w
 15:56:14 hasta 5 días, 20:58, 6 usuarios, promedio de carga: 0.43, 0.53, 0.50
USUARIO TTY LOGIN @ IDLE JCPU PCPU QUÉ
me pts / 2 Vie 19 1: 03m 0.98s 0.98s - / bin / bash
me pts / 3 09:55 6: 00m 0.43s 0.43s / bin / bash
me pts / 5 15:56 0.00s 0.23s 0.00sw

(Esto es de un sistema Linux; el formato en OS X puede ser ligeramente diferente, pero la información debe ser aproximadamente la misma).

Puede haber varias sesiones de inicio de sesión; UNIX está diseñado para ser un sistema multiusuario, después de todo.

efímero
fuente
4

También puede usar el lognamecomando del Manual de comandos generales de BSD en Linux o MacOS para ver el nombre de usuario del usuario que está conectado actualmente, incluso si el usuario está realizando una sudooperación. Esto es útil, por ejemplo, cuando se modifica el crontab de un usuario mientras se instala un paquete de todo el sistema con sudo:crontab -u $(logname)

Por man logname:

LOGNAME(1)

NAME
    logname -- display user's login name
Adam Link
fuente
1
Esta es definitivamente la solución más limpia y fácil. Funciona sin importar qué usuario esté ejecutando el comando.
Maxime Viargues
2

La pregunta no ha sido completamente respondida, en mi humilde opinión. Intentaré explicar: tengo una entrada crontab que programa un procedimiento de comando de shell bash, que a su vez hace una limpieza de mis archivos; y, cuando se hace, envía una notificación a mí con el centro de notificaciones de OS X (con el comando osascript -e 'display notification ...). Si alguien (por ejemplo, mi esposa o mi hija) cambia el usuario actual de la computadora a ella, dejándome en segundo plano, el script cron falla al enviar la notificación.

Por lo tanto, quién es el usuario actual mediante alguna otra gente ha convertido en el usuario efectivo dejándome en el fondo ? ¿ stat -f "%Su" /dev/consoleDevuelve el nombre de usuario activo actual ?

La respuesta es sí; entonces, ahora mi script de shell crontab se ha modificado de la siguiente manera:

...
if [ "$(/usr/bin/stat -f ""%Su"" /dev/console)" = "loreti" ]
then /usr/bin/osascript -e \
  'display notification "Cleanup done" sound name "sosumi" with title "myCleanup"'
fi
Maurizio Loreti
fuente
2

obtener el nombre de usuario en la terminal MAC es fácil ...

Generalmente uso whoamien terminal ...

Por ejemplo, en este caso, lo necesitaba para instalar Tomcat Server ...

ingrese la descripción de la imagen aquí

Alireza
fuente
2

Hay dos maneras-

whoami

o

echo $USER
Manas Sharma
fuente
1

También puede recuperarlo de las variables de entorno, pero eso probablemente no sea seguro, por lo que iría con la respuesta de Andrew.

printenv USER

Si necesita recuperarlo de una aplicación, como Node, es más fácil obtenerlo de las variables de entorno, como

process.env.USER.

¿Qué sería genial?
fuente
1

Defina 'usuario activo'.

Si la pregunta es 'quién es el usuario que inició sesión', entonces 'quién soy yo' o ​​'whoami' está bien (aunque dan respuestas diferentes: 'whoami' informa solo un nombre de usuario; 'quién soy yo' informa en la terminal y tiempo de inicio de sesión también).

Si la pregunta es 'qué ID de usuario es el ID efectivo para el shell', a menudo es mejor usar 'id'. Esto informa sobre el ID de usuario y el ID de grupo reales y efectivos, y también sobre los ID de grupo complementarios. Esto puede ser importante si el shell está ejecutando SUID o SGID.

Jonathan Leffler
fuente