¿Cómo obtengo el nombre del usuario activo a través de la línea de comando en OS X?
¿Cómo obtengo el nombre del usuario activo a través de la línea de comando en OS X?
Respuestas:
como 'whoami' ha quedado obsoleto, probablemente sea más compatible con el futuro:
id -un
whoami
Leopard confirma que ha sido reemplazada por id
.
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 whoami
utilidad ha quedado obsoleta y es equivalente a id -un
. Te dará el usuario actual
Vía aquí
Verificar el propietario de / dev / console parece funcionar bien.
stat -f "%Su" /dev/console
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.
También puede usar el logname
comando 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 sudo
operació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
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/console
Devuelve 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
Hay dos maneras-
whoami
o
echo $USER
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
.
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.