Risposte:
Dalle variabili di ambiente ,
$LOGNAMEè lo stesso $USERche 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,
$LOGNAMEdà il nome dell'utente attualmente connesso nel terminale (es. root)lognamestampa 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.