Как мне получить имя активного пользователя через командную строку в OS X?
Как мне получить имя активного пользователя через командную строку в OS X?
Ответы:
поскольку 'whoami' устарел, его, вероятно, лучше использовать:
id -un
whoami
по Leopard подтверждает, что он был заменен на id
.
Я почти уверен, что терминал в OS X такой же, как unix, поэтому команда будет такой:
whoami
На данный момент у меня нет Mac, так что кто-нибудь поправит меня, если я ошибаюсь.
ПРИМЕЧАНИЕ. - whoami
Утилита устарела и эквивалентна id -un
. Это даст вам текущего пользователя
Если вы хотите знать, кто в данный момент вошел в систему:
$ w 15:56:14 до 5 дней, 20:58, 6 пользователей, средняя нагрузка: 0,43, 0,53, 0,50 ВХОД ПОЛЬЗОВАТЕЛЯ TTY @ IDLE JCPU PCPU ЧТО me pts / 2 Fri19 1: 03m 0.98s 0.98s - / bin / bash мне пц / 3 09:55 6: 00м 0,43 с 0,43 с / bin / bash me pts / 5 15:56 0.00s 0.23s 0.00sw
(Это из системы Linux; форматирование в OS X может немного отличаться, но информация должна быть примерно такой же.)
Может быть несколько сеансов входа в систему; В конце концов, UNIX спроектирована как многопользовательская система.
Вы также можете использовать logname
команду из Руководства по основным командам BSD в Linux или MacOS, чтобы увидеть имя пользователя, вошедшего в систему, даже если пользователь выполняет какую-либо sudo
операцию. Это полезно, например, при изменении crontab пользователя при установке общесистемного пакета с помощью sudo:crontab -u $(logname)
За man logname
:
LOGNAME(1)
NAME
logname -- display user's login name
Вопрос не получил полного ответа, ИМХО. Я попытаюсь объяснить: у меня есть запись crontab, которая планирует процедуру команды оболочки bash, которая, в свою очередь, выполняет некоторую очистку моих файлов; и, когда это будет сделано, отправляет мне уведомление с помощью центра уведомлений OS X (с помощью команды osascript -e 'display notification ...
). Если кто-то (например, моя жена или моя дочь) переключает на нее текущего пользователя компьютера, оставляя меня в фоновом режиме, сценарий cron завершается ошибкой при отправке уведомления.
Итак, кто является текущим пользователем, означает, что некоторые другие люди стали эффективными пользователями, оставив меня в тени ? У stat -f "%Su" /dev/console
возвращает текущий активный пользователь имя?
Ответ положительный; Итак, теперь мой сценарий оболочки crontab был изменен следующим образом:
...
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
Есть два пути-
whoami
или
echo $USER
Вы также можете получить его из переменных среды, но это, вероятно, небезопасно, поэтому я бы пошел с ответом Эндрю.
printenv USER
Если вам нужно получить его из приложения, такого как Node, проще получить его из переменных среды, таких как
process.env.USER
.
Определите «активного пользователя».
Если вопрос в том, «кто вошел в систему», то «кто я» или «whoami» подойдет (хотя они дают разные ответы - «whoami» сообщает только имя пользователя; «кто я» сообщает на терминале и время входа тоже).
Если вопрос заключается в том, «какой идентификатор пользователя является эффективным идентификатором для оболочки», то часто лучше использовать «id». Это сообщает о реальном и действующем идентификаторе пользователя и группе, а также о дополнительных идентификаторах группы. Это может иметь значение, если в оболочке запущен SUID или SGID.