Comment obtenir le nom de l'utilisateur actif via la ligne de commande sous OS X?
Comment obtenir le nom de l'utilisateur actif via la ligne de commande sous OS X?
Réponses:
comme 'whoami' est obsolète, il est probablement plus compatible avec les versions ultérieures à utiliser:
id -un
whoami
sur Leopard confirme qu'elle a été remplacée par id
.
ÉDITER
L'utilitaire whoami est devenu obsolète par l'utilitaire id (1) et équivaut à id -un
. La commande id -p
est suggérée pour une utilisation interactive normale.
Par ici
Vérifier le propriétaire de / dev / console semble bien fonctionner.
stat -f "%Su" /dev/console
Je suis presque sûr que le terminal sous OS X est comme unix, donc la commande serait:
whoami
Je n'ai pas de mac sur moi pour le moment, alors quelqu'un me corrige si je me trompe.
NOTE - L' whoami
utilitaire est obsolète et équivaut à id -un
. Cela vous donnera l'utilisateur actuel
Si vous voulez savoir qui est actuellement connecté au système:
$ w 15:56:14 jusqu'à 5 jours, 20:58, 6 utilisateurs, moyenne de charge: 0,43, 0,53, 0,50 UTILISATEUR TTY LOGIN @ IDLE JCPU PCPU QUOI moi pts / 2 ven19 1: 03m 0.98s 0.98s - / bin / bash moi pts / 3 09:55 6: 00m 0.43s 0.43s / bin / bash moi pts / 5 15:56 0.00s 0.23s 0.00sw
(Cela provient d'un système Linux; le formatage sous OS X peut être légèrement différent, mais les informations devraient être à peu près les mêmes.)
Il peut y avoir plusieurs sessions de connexion; UNIX est conçu pour être un système multi-utilisateurs, après tout.
Vous pouvez également utiliser la logname
commande du manuel des commandes générales BSD sous Linux ou MacOS pour voir le nom d'utilisateur de l'utilisateur actuellement connecté, même si l'utilisateur effectue une sudo
opération. Ceci est utile, par exemple, lors de la modification du crontab d'un utilisateur lors de l'installation d'un package à l'échelle du système avec sudo:crontab -u $(logname)
Par man logname
:
LOGNAME(1)
NAME
logname -- display user's login name
La question n'a pas été complètement répondue, à mon humble avis. Je vais essayer d'expliquer: j'ai une entrée crontab qui planifie une procédure de commande bash shell, qui à son tour effectue un certain nettoyage de mes fichiers; et, une fois terminé, m'envoie une notification en utilisant le centre de notification OS X (avec la commande osascript -e 'display notification ...
). Si quelqu'un (par exemple ma femme ou ma fille) change l'utilisateur actuel de l'ordinateur vers elle, me laissant en arrière-plan, le script cron échoue lors de l'envoi de la notification.
Alors, qui est l'utilisateur actuel signifie Est-ce que d'autres personnes sont devenues l'utilisateur effectif en me laissant en arrière - plan ? Est - ce que stat -f "%Su" /dev/console
renvoie le courant utilisateur actif nom?
La réponse est oui; donc, maintenant, mon script shell crontab a été modifié de la manière suivante:
...
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
Il y a deux façons
whoami
ou
echo $USER
Vous pouvez également le récupérer à partir des variables d'environnement, mais ce n'est probablement pas sécurisé, alors j'irais avec la réponse d'Andrew.
printenv USER
Si vous avez besoin de le récupérer à partir d'une application, telle que Node, il est plus facile de l'obtenir à partir des variables d'environnement, telles que
process.env.USER
.
Définissez «utilisateur actif».
Si la question est `` qui est l'utilisateur connecté '', alors `` qui suis-je '' ou `` whoami '' convient (bien qu'ils donnent des réponses différentes - `` whoami '' ne signale qu'un nom d'utilisateur; `` qui suis-je '' rapporte sur le terminal et temps de connexion aussi).
Si la question est «quel ID utilisateur est l'ID effectif du shell», il est souvent préférable d'utiliser «id». Cela rend compte de l'ID utilisateur et de l'ID de groupe réels et effectifs, ainsi que sur les ID de groupe supplémentaires. Cela peut être important si le shell exécute SUID ou SGID.