Jak uzyskać nazwę aktywnego użytkownika za pomocą wiersza poleceń w systemie OS X?
Jak uzyskać nazwę aktywnego użytkownika za pomocą wiersza poleceń w systemie OS X?
Odpowiedzi:
Ponieważ 'whoami' jest przestarzałe, prawdopodobnie jest bardziej kompatybilne z przyszłością:
id -un
whoami
Leopard potwierdza, że została zastąpiona przez id
.
EDYTOWAĆ
Narzędzie whoami zostało przestarzałe przez narzędzie id (1) i jest równoważne id -un
. Polecenie id -p
jest zalecane do normalnego użytku interaktywnego.
Jestem prawie pewien, że terminal w OS X jest taki sam jak unix, więc polecenie wyglądałoby tak:
whoami
W tej chwili nie mam przy sobie Maca, więc ktoś mnie poprawi, jeśli się mylę.
UWAGA - whoami
narzędzie zostało przestarzałe i jest równoważne id -un
. Daje ci aktualnego użytkownika
Via tutaj
Sprawdzenie właściciela / dev / console wydaje się działać dobrze.
stat -f "%Su" /dev/console
Jeśli chcesz wiedzieć, kto jest aktualnie zalogowany do systemu:
$ w 15:56:14 w górę o 5 dni, 20:58, 6 użytkowników, średnie obciążenie: 0,43, 0,53, 0,50 LOGIN TTY UŻYTKOWNIKA @ IDLE JCPU PCPU CO me pts / 2 Fri19 1: 03m 0,98s 0,98s - / bin / bash me pts / 3 09:55 6: 00m 0,43s 0,43s / bin / bash me pkt / 5 15:56 0,00s 0,23s 0,00sw
(Pochodzi z systemu Linux; formatowanie w systemie OS X może być nieco inne, ale informacje powinny być mniej więcej takie same).
Może być wiele sesji logowania; W końcu UNIX został zaprojektowany jako system dla wielu użytkowników.
Możesz także użyć logname
polecenia z podręcznika BSD General Commands Manual w systemie Linux lub MacOS, aby zobaczyć nazwę użytkownika aktualnie zalogowanego użytkownika, nawet jeśli użytkownik wykonuje sudo
operację. Jest to przydatne, na przykład, podczas modyfikowania crontab użytkownika podczas instalowania pakietu dla całego systemu z sudo:crontab -u $(logname)
Na man logname
:
LOGNAME(1)
NAME
logname -- display user's login name
Na pytanie nie ma pełnej odpowiedzi, IMHO. Spróbuję wyjaśnić: Mam wpis w tabeli crontab, który planuje procedurę poleceń powłoki bash, która z kolei wykonuje pewne czyszczenie moich plików; a po zakończeniu wysyła do mnie powiadomienie za pomocą centrum powiadomień OS X (z poleceniem osascript -e 'display notification ...
). Jeśli ktoś (np. Moja żona lub córka) przełączy na nią obecnego użytkownika komputera, pozostawiając mnie w tle, skrypt cron zawiedzie podczas wysyłania powiadomienia.
Tak więc, kto jest aktualnym użytkownikiem, to znaczy Czy inne osoby stały się efektywnymi użytkownikami, pozostawiając mnie w tle ? Czy stat -f "%Su" /dev/console
zwraca bieżącą nazwę aktywnego użytkownika ?
Odpowiedź brzmi tak; więc teraz mój skrypt powłoki crontab został zmodyfikowany w następujący sposób:
...
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
Istnieją dwa sposoby-
whoami
lub
echo $USER
Możesz również pobrać go ze zmiennych środowiskowych, ale to prawdopodobnie nie jest bezpieczne, więc poszedłbym z odpowiedzią Andrew.
printenv USER
Jeśli chcesz pobrać go z aplikacji, takiej jak Node, łatwiej jest pobrać go ze zmiennych środowiskowych, takich jak
process.env.USER
.
Zdefiniuj „aktywnego użytkownika”.
Jeśli pytanie brzmi `` kto jest zalogowanym użytkownikiem '', to `` kim jestem '' lub `` whoami '' jest w porządku (chociaż udzielają różnych odpowiedzi - `` whoami '' zgłasza tylko nazwę użytkownika; `` kim jestem '' '' raportuje na terminalu i czas logowania).
Jeśli pytanie brzmi „który identyfikator użytkownika jest efektywnym identyfikatorem powłoki”, często lepiej jest użyć „id”. Raport ten zawiera informacje na temat rzeczywistego i efektywnego identyfikatora użytkownika i identyfikatora grupy, a także dodatkowych identyfikatorów grup. Może to mieć znaczenie, jeśli w powłoce działa SUID lub SGID.