Jak uzyskać nazwę aktywnego użytkownika za pomocą wiersza poleceń w systemie OS X?
macos
command-line
Lawrence Johnston
źródło
źródło
whoami
Leopard potwierdza, że została zastąpiona przezid
.Jeśli chcesz wyświetlić pełną nazwę (zamiast nazwy użytkownika), dodaj
-F
flagę:źródło
kim jestem
EDYTOWAĆ
Narzędzie whoami zostało przestarzałe przez narzędzie id (1) i jest równoważne
id -un
. Polecenieid -p
jest zalecane do normalnego użytku interaktywnego.źródło
Jestem prawie pewien, że terminal w OS X jest taki sam jak unix, więc polecenie wyglądałoby tak:
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żneid -un
. Daje ci aktualnego użytkownikaźródło
Via tutaj
Sprawdzenie właściciela / dev / console wydaje się działać dobrze.
stat -f "%Su" /dev/console
źródło
Jeśli chcesz wiedzieć, kto jest aktualnie zalogowany do systemu:
(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.
źródło
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 wykonujesudo
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
:źródło
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:
źródło
uzyskanie nazwy użytkownika w terminalu MAC jest łatwe ...
Zwykle używam
whoami
w terminalu ...Na przykład w tym przypadku potrzebowałem tego do zainstalowania serwera Tomcat ...
źródło
Istnieją dwa sposoby-
lub
źródło
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
.źródło
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.
źródło