Differenza tra $ LOGNAME e logname


12

quando echo $LOGNAMEo i lognamecomandi vengono eseguiti normalmente ottengono lo stesso risultato come segue:

pandya@pandya-desktop:~$ echo $LOGNAME
pandya
pandya@pandya-desktop:~$ logname
pandya

Quindi, c'è qualche differenza tra loro?

Risposte:


17

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)
  • Considerando che lognamestampa il nome di accesso dell'utente che ha effettuato l'accesso nella sessione (ad es. pandya)


6

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.