Как я могу получить имя активного пользователя через командную строку в OS X?

Как я могу получить имя активного пользователя через командную строку в OS X?

Ответы на вопрос(11)

Если вопрос «кто вошел в систему как пользователь», то «кто я». или 'whoami'; хорошо (хотя они дают разные ответы - «whoami» сообщает только имя пользователя; «кто я» сообщает о терминале и времени входа в систему).

Если вопрос заключается в том, «какой идентификатор пользователя является эффективным идентификатором для оболочки», то часто лучше использовать «идентификатор». Это сообщает о действительном и эффективном идентификаторе пользователя и идентификаторе группы, а также о дополнительных идентификаторах группы. Это может иметь значение, если оболочка работает SUID или SGID.

$ w
 15:56:14 up 5 days, 20:58,  6 users,  load average: 0.43, 0.53, 0.50
USER     TTY        [email protected]   IDLE   JCPU   PCPU WHAT
me       pts/2     Fri1,9    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.00s w

(Это из системы Linux; форматирование в OS X может немного отличаться, но информация должна быть примерно такой же.)

Может быть несколько сеансов входа в систему; В конце концов, UNIX спроектирован как многопользовательская система.

Решение Вопроса

id -un
 09 июл. 2009 г., 18:58
Agh! Почему они меняют то, что существует с незапамятных времен?
 09 июл. 2009 г., 18:49
наберите 'man whoami'
 09 июл. 2009 г., 18:46
В каком смысле это «whoami»? устарел? Кто объявил это устаревшим?
 09 июл. 2009 г., 18:51
@Jonathan: справочная страница дляwhoami на леопарде подтверждает, что он был замененid.
 02 февр. 2012 г., 11:26
что сказать? & Л; штангового chacka & GT;

что терминал в OS X похож на unix, поэтому команда будет такой:

whoami

В данный момент у меня нет Mac, поэтому кто-то поправляет меня, если я ошибаюсь.

 09 июл. 2009 г., 19:09
да, OSX 10.5 - это (наконец) полностью квалифицированный Unix.

logname команда из Руководства по общим командам BSD под Linux или MacOS, чтобы увидеть имя пользователя, который в данный момент вошел в систему, даже если пользователь выполняетsudo операция. Это полезно, например, при изменении пользовательского crontab при установке общесистемного пакета с помощью sudo:crontab -u $(logname)

вman logname:

LOGNAME(1)

NAME
    logname -- display user's login name
 21 февр. 2019 г., 01:57
Это определенно самое чистое и простое решение. Это работает независимо от того, какой пользователь выполняет команду.

добавьте-F флаг:

$ id -F
Andrew Havens
 11 сент. 2017 г., 16:57
-F - это недопустимый вариант в Mavericks - когда это впервые заработало?
 20 февр. 2019 г., 00:53
работает в macOS High Sierra 10.13.6

получить имя пользователя вMAC terminal это просто...

Я вообще пользуюсьwhoami вterminal...

Например, в этом случае мне нужно было установитьTomcat Server...

enter image description here

но это, вероятно, небезопасно, поэтому я бы согласился с ответом Эндрю.

printenv USER

Если вам нужно извлечь его из приложения, такого как Node, проще получить его из переменных среды, таких как

process.env.USER.

кто я

EDIT

Утилита whoami устарела с помощью утилиты id (1) и эквивалентнаid -un, Командаid -p предлагается для обычного интерактивного использования.

у меня есть запись в crontab, которая планирует командную процедуру оболочки bash, которая, в свою очередь, выполняет некоторую очистку моих файлов; и, когда закончите, отправляет уведомлениеto me используя центр уведомлений OS X (с командойosascript -e 'display notification ...). Если кто-то (например, моя жена или моя дочь) переключает на нее текущего пользователя компьютера, оставляя меня на заднем плане, сценарий cronfails при отправке уведомления.

Так,Who is the current user средстваHas some other people become the effective user leaving me in the background? Делатьstat -f "%Su" /dev/console возвращает текущийactive user название?

Ответ - да; Итак, теперь мой сценарий оболочки 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

Вот

Проверка владельца / dev / console, кажется, работает хорошо.

stat -f "%Su" /dev/console

 15 янв. 2016 г., 02:17
Это прекрасно работает, если вы подключены по ssh к компьютеру и хотите посмотреть, вошел ли пользователь в систему локально. Если это не так, команда вернет "root".

Ваш ответ на вопрос