2009-07-09 10 views

risposta

78

come 'whoami' è diventato obsoleto è probabilmente più avanti compatibile da utilizzare:

id -un 
+1

In che senso "whoami" è obsoleto? Chi l'ha dichiarato obsoleto? –

+3

digita "man whoami" – kent

+0

@Jonathan: la pagina man di 'whoami' su Leopard conferma che è stata sostituita da' id'. – Naaff

6

Via here

Controllo il proprietario di/dev/console sembra funzionare bene.

stat -f "%Su" /dev/console

+0

Questo funziona perfettamente se si esegue l'ssh in una macchina e si desidera verificare se un utente ha effettuato l'accesso localmente. Se non lo sono, il comando restituirà "root". –

7

whoami

EDIT

L'utilità whoami è obsoleto dalla (1) utilità id, ed è equivalente a id -un. Il comando id -p è consigliato per il normale utilizzo interattivo.

4

sono abbastanza sicuro il terminale in OS X è come UNIX, in modo che il comando sarà:

whoami 

Non ho un mac su di me in questo momento così qualcuno mi corregga se ho torto

+0

sì, OSX 10.5 è (finalmente) un Unix completo. – kent

0

Definire 'utente attivo'.

Se la domanda è "chi è l'utente connesso", allora "chi sono io" o "whoami" va bene (anche se danno risposte diverse - "whoami" riporta solo un nome utente; "chi sono io" rapporti anche sul terminale e tempo di accesso).

Se la domanda è "quale ID utente è l'ID effettivo per la shell", è spesso preferibile utilizzare "id". Questo riporta l'ID utente reale e effettivo e l'ID di gruppo e anche gli ID di gruppo supplementari. Ciò potrebbe essere importante se la shell esegue SUID o SGID.

1

Se volete sapere chi è attualmente connesso al sistema:

 
$ 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  Fri19 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 

(Questo è da un sistema Linux, la formattazione su OS X potrebbe essere leggermente diverso, ma le informazioni dovrebbero essere circa lo stesso .)

Possono esserci più sessioni di accesso; UNIX è progettato per essere un sistema multiutente, dopotutto.

12

Se vuoi per visualizzare il nome completo (al posto del nome utente), aggiungere il flag -F:

$ id -F 
Andrew Havens 
+0

-F è un'opzione illegale in Mavericks - quando ha iniziato a funzionare? –

0

La questione non è stata completamente risolta, IMHO. Proverò a spiegare: ho una voce crontab che programma una procedura di comando della shell bash, che a sua volta esegue una pulizia dei miei file; e, al termine, invia una notifica a me utilizzando il centro di notifica OS X (con il comando osascript -e 'display notification ...). Se qualcuno (ad es. Mia moglie o mia figlia) passa a lei l'utente corrente del computer, lasciandomi in secondo piano, lo script cron non riesce durante l'invio della notifica.

Quindi, Chi è l'utente corrente significa ha alcune altre persone diventano l'utente effettivo lasciandomi in background? Lo stat -f "%Su" /dev/console restituisce l'attuale nome utente attivo?

La risposta è sì; così, ora il mio script di shell crontab è stato modificato nel modo seguente:

... 
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 
Problemi correlati