Wie erhalte ich den Namen des aktiven Benutzers über die Befehlszeile in OS X?
Wie erhalte ich den Namen des aktiven Benutzers über die Befehlszeile in OS X?
Antworten:
Da 'whoami' veraltet ist, ist es wahrscheinlich vorwärtskompatibler zu verwenden:
id -un
whoami
Leopard bestätigt, dass sie durch ersetzt wurde id
.
BEARBEITEN
Das whoami-Dienstprogramm wurde durch das Dienstprogramm id (1) veraltet und entspricht id -un
. Der Befehl id -p
wird für die normale interaktive Verwendung empfohlen.
Über hier
Das Überprüfen des Besitzers von / dev / console scheint gut zu funktionieren.
stat -f "%Su" /dev/console
Ich bin mir ziemlich sicher, dass das Terminal in OS X genau wie Unix ist, daher lautet der Befehl:
whoami
Ich habe momentan keinen Mac bei mir, also korrigiert mich jemand, wenn ich falsch liege.
HINWEIS - Das whoami
Dienstprogramm wurde veraltet und entspricht id -un
. Es gibt Ihnen den aktuellen Benutzer
Wenn Sie wissen möchten, wer gerade am System angemeldet ist:
$ w 15:56:14 bis 5 Tage, 20:58, 6 Benutzer, Lastdurchschnitt: 0,43, 0,53, 0,50 USER TTY LOGIN @ IDLE JCPU PCPU WAS me pts / 2 Fr19 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.00sw
(Dies ist von einem Linux-System; die Formatierung unter OS X kann geringfügig abweichen, die Informationen sollten jedoch ungefähr gleich sein.)
Es kann mehrere Anmeldesitzungen geben. Schließlich ist UNIX als Mehrbenutzersystem konzipiert.
Sie können auch den logname
Befehl aus dem BSD General Commands Manual unter Linux oder MacOS verwenden, um den Benutzernamen des aktuell angemeldeten Benutzers anzuzeigen, selbst wenn der Benutzer einen sudo
Vorgang ausführt . Dies ist beispielsweise nützlich, wenn Sie die Crontab eines Benutzers ändern, während Sie ein systemweites Paket mit sudo installieren:crontab -u $(logname)
Per man logname
:
LOGNAME(1)
NAME
logname -- display user's login name
Die Frage wurde meiner Meinung nach nicht vollständig beantwortet. Ich werde versuchen zu erklären: Ich habe einen Crontab-Eintrag, der eine Bash-Shell-Befehlsprozedur plant, die wiederum einige Bereinigungen meiner Dateien durchführt. Wenn Sie fertig sind, senden Sie mir eine Benachrichtigung über das OS X-Benachrichtigungscenter (mit dem Befehl osascript -e 'display notification ...
). Wenn jemand (z. B. meine Frau oder meine Tochter) den aktuellen Benutzer des Computers zu ihr wechselt und mich im Hintergrund lässt, schlägt das Cron-Skript beim Senden der Benachrichtigung fehl .
Also, wer ist der aktuelle Benutzer Mittel hat einige andere Leute die effektive Benutzer werden ließ mich im Hintergrund ? Haben stat -f "%Su" /dev/console
kehrt die aktuellen aktiven Benutzername?
Die Antwort ist ja; Jetzt wurde mein Crontab-Shell-Skript folgendermaßen geändert:
...
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
Es gibt zwei Möglichkeiten:
whoami
oder
echo $USER
Sie können es auch aus den Umgebungsvariablen abrufen, aber das ist wahrscheinlich nicht sicher, daher würde ich Andrews Antwort folgen.
printenv USER
Wenn Sie es aus einer App wie Node abrufen müssen, ist es einfacher, es aus Umgebungsvariablen wie z
process.env.USER
.
Definieren Sie 'aktiver Benutzer'.
Wenn die Frage "Wer ist der angemeldete Benutzer" lautet, ist "Wer bin ich" oder "Whoami" in Ordnung (obwohl sie unterschiedliche Antworten geben - "Whoami" meldet nur einen Benutzernamen; "Wer bin ich" meldet auf dem Terminal und Anmeldezeit auch).
Wenn die Frage lautet, welche Benutzer-ID die effektive ID für die Shell ist, ist es häufig besser, die ID zu verwenden. Dies berichtet über die tatsächliche und effektive Benutzer-ID und Gruppen-ID sowie über die zusätzlichen Gruppen-IDs. Dies kann von Bedeutung sein, wenn auf der Shell SUID oder SGID ausgeführt wird.