Risposte:
Dalle variabili di ambiente ,
$LOGNAME
è lo stesso $USER
che dà
Il nome dell'utente attualmente connesso. Questa variabile è impostata dal sistema. Probabilmente non dovresti cambiarne il valore manualmente.
A partire dal man logname
logname - stampa il nome di accesso dell'utente
Scaduto usato diversamente dal seguente esempio:
pandya@pandya-desktop:~$ sudo su
root@pandya-desktop:/home/pandya# echo $LOGNAME
root
root@pandya-desktop:/home/pandya# logname
pandya
root@pandya-desktop:/home/pandya# exit
exit
pandya@pandya-desktop:~$
Qui puoi vedere la differenza dopo il login come root nel terminale,
$LOGNAME
dà il nome dell'utente attualmente connesso nel terminale (es. root
)logname
stampa il nome di accesso dell'utente che ha effettuato l'accesso nella sessione (ad es. pandya
)Il nome log dell'utilità è rotto nel 16.04, apparentemente apposta perché è possibile hackerare il valore che restituisce, che potrebbe essere un difetto di sicurezza. https://bugzilla.gnome.org/show_bug.cgi?id=747046 Ho usato il nome di registro in alcuni script e l'ho trovato utile perché restituiva sempre lo stesso valore (il mio nome di accesso) se lo chiamavo da un il mio livello o da una chiamata sudo, mentre le variabili di ambiente $ USER e $ LOGNAME no. Non ero preoccupato che qualcuno hackerasse il mio computer e modificasse il valore che restituisce. Ahimè .... ho trovato una soluzione alternativa. Ho creato un file nella mia home directory come tale
echo $USER > ~/.logname
Quando voglio accedere al mio nome di registro (ad esempio, assegnando a una variabile Bash g_logname), lo faccio in questo modo:
declare g_logname="$(<~/.logname)";
Questo funziona per me, sia come me stesso che a livello di root tramite sudo, che mantiene l'assegnazione di "~" come directory home. Posso creare un file .logname per la home directory di ciascun utente sul sistema. Sì, qualcuno potrebbe hackerare il mio computer e modificare questi file, ma non sono davvero preoccupato per questo. Voglio solo che i miei script funzionino.