Comment obtenir le nom de l'utilisateur actif via la ligne de commande sous OS X?
comme 'whoami' est obsolète, son utilisation est probablement plus compatible avec les versions suivantes:
id -un
Si vous souhaitez afficher le nom complet (au lieu du nom d'utilisateur), ajoutez l'indicateur -F
:
$ id -F
Andrew Havens
MODIFIER
L'utilitaire whoami est obsolète par l'utilitaire id (1) et équivaut à id -un
. La commande id -p
est suggérée pour une utilisation interactive normale.
Je suis à peu près sûr que le terminal sous OS X ressemble à unix, la commande serait donc:
whoami
Je n'ai pas de mac sur moi pour le moment, alors quelqu'un me corrige si je me trompe.
Si vous voulez savoir qui est actuellement connecté au système:
$ w 15:56:14 jusqu'à 5 jours, 20:58, 6 utilisateurs, charge moyenne: 0.43, 0.53, 0.50 CONNEXION TTY UTILISATEUR @ IDLE JCPU PCPU QUOI. -/bin/bash pts/3 09:55 06:00 min 0.43s 0.43s /bin/bash me pts/5 15:56 0.00s 0.23s 0.00s w.
(Il s’agit d’un système Linux; le formatage sous OS X peut être légèrement différent, mais les informations doivent ê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-utilisateur, après tout.
La question n'a pas été complètement répondu, à mon humble avis. Je vais essayer d’expliquer: j’ai une entrée dans la crontab qui planifie une procédure de commande bash Shell, qui effectue à son tour un nettoyage de mes fichiers; et, une fois terminé, envoie une notification à moi à l'aide du centre de notification OS X (avec la commande osascript -e 'display notification ...
). Si quelqu'un (par exemple, ma femme ou ma fille) renvoie l'utilisateur actuel de l'ordinateur à elle, me laissant en arrière-plan, le script cron échoue lors de l'envoi de la notification.
Donc, Qui est l'utilisateur actuel signifie D'autres personnes sont-elles devenues l'utilisateur effectif me laissant en arrière-plan? Est-ce que stat -f "%Su" /dev/console
renvoie l'utilisateur actuel actif name?
La réponse est oui; alors, 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
Vous pouvez également utiliser la commande logname
du Manuel des commandes générales BSD sous Linux ou MacOS pour afficher le nom d'utilisateur de l'utilisateur actuellement connecté, même s'il effectue une opération Sudo
. Ceci est utile, par exemple, lors de la modification de la crontab d'un utilisateur lors de l'installation d'un paquet système avec Sudo: crontab -u $(logname)
Par man logname
:
LOGNAME(1)
NAME
logname -- display user's login name
Définir 'utilisateur actif'.
Si la question est "qui est l'utilisateur connecté", alors "qui suis-je" ou "whoami" est correct (bien qu'ils donnent des réponses différentes - "whoami" signale simplement un nom d'utilisateur; temps de connexion aussi).
Si la question est "quel ID utilisateur est l'identifiant effectif du Shell", il est souvent préférable d'utiliser "id". Cela indique l'ID utilisateur et l'ID de groupe réels et effectifs, ainsi que les ID de groupe supplémentaires. Cela peut être important si Shell exécute SUID ou SGID.
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 devez le récupérer depuis une application, telle que Node, il est plus facile de l'obtenir à partir des variables d'environnement, telles que
process.env.USER
.