Як отримати ім'я активного користувача за допомогою командного рядка в OS X?
Як отримати ім'я активного користувача за допомогою командного рядка в OS X?
Відповіді:
оскільки "whoami" застаріло, воно, мабуть, більш сумісне уперед:
id -un
whoami
Leopard підтверджує, що її було замінено на id
.
Я майже впевнений, що термінал в OS X подібний до unix, тому команда буде такою:
whoami
На даний момент у мене немає mac, тому хтось виправив мене, якщо я помиляюся.
ПРИМІТКА - Службова whoami
програма застаріла та еквівалентна id -un
. Це дасть вам поточного користувача
Якщо ви хочете дізнатись, хто наразі ввійшов у систему:
$ ш 15:56:14 до 5 днів, 20:58, 6 користувачів, середнє навантаження: 0,43, 0,53, 0,50 КОРИСТУВАЧ TTY ВХІД @ IDLE JCPU PCPU ЩО мені оч / 2 пт19 1: 03м 0,98 с 0,98 с - / bin / bash мені оч / 3 09:55 6: 00м 0,43с 0,43с / бен / баш мені оч / 5 15:56 0,00с 0,23с 0,00св
(Це з системи 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 не справляється при надсиланні сповіщення.
Отже, хто такий поточний користувач, означає, що деякі інші люди стали ефективним користувачем, залишивши мене на задньому плані ? Do 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
.
Визначте "активний користувач".
Якщо питання полягає в тому, "хто зареєстрований користувач", тоді "хто я" або "хтомі" - це нормально (хоча вони дають різні відповіді - "хтомі" повідомляє лише ім'я користувача; "хто я" повідомляє на терміналі та час входу).
Якщо питання полягає в тому, "який ідентифікатор користувача є ефективним ідентифікатором оболонки", то часто краще використовувати "ідентифікатор". У цьому звіті повідомляється про реальний та ефективний ідентифікатор користувача та ідентифікатор групи, а також про додаткові ідентифікатори груп. Це може мати значення, якщо в оболонці запущено SUID або SGID.