Perbedaan antara $ LOGNAME dan logname

12

kapan echo $LOGNAMEatau lognameperintah dijalankan secara normal mendapatkan hasil yang sama seperti berikut:

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

Jadi, apakah ada perbedaan di antara mereka?

Pandya
sumber

Jawaban:

17

Dari variabel Lingkungan ,

$LOGNAMEsama seperti $USERyang memberi

Nama pengguna yang saat ini masuk. Variabel ini diatur oleh sistem. Anda mungkin tidak boleh mengubah nilainya secara manual.

Dari man logname

logname - cetak nama login pengguna


Dihabiskan berbeda dengan contoh berikut:

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:~$

Di sini Anda dapat melihat perbedaan setelah login sebagai root di terminal,

  • $LOGNAMEmemberikan nama pengguna yang saat ini masuk di terminal (yaitu root)
  • Sedangkan lognamecetak nama login pengguna yang masuk sesi (yaitu pandya)
Pandya
sumber
6

Logname utilitas rusak di 16.04, tampaknya sengaja karena mungkin untuk meretas nilai yang dikembalikan, yang bisa menjadi cacat keamanan. https://bugzilla.gnome.org/show_bug.cgi?id=747046 Saya telah menggunakan logname di beberapa skrip, dan menganggapnya berguna karena selalu mengembalikan nilai yang sama (nama login saya) apakah saya menelepon dari dari tingkat saya sendiri atau dari doa sudo, sedangkan variabel lingkungan $ USER dan $ LOGNAME tidak. Saya tidak khawatir tentang seseorang yang meretas komputer saya dan memodifikasi nilai yang dihasilkannya. Sial .... Saya telah menemukan solusi. Saya membuat file di direktori home saya

echo $USER > ~/.logname

Ketika saya ingin mengakses logname saya (mis., Menetapkan ke variabel Bash g_logname), saya melakukannya dengan demikian:

declare g_logname="$(<~/.logname)";

Ini berfungsi untuk saya, baik sebagai saya sendiri atau di tingkat root melalui sudo, yang mempertahankan penugasan "~" sebagai direktori home saya. Saya bisa membuat file .logname untuk direktori home masing-masing pengguna di sistem. Ya, seseorang dapat meretas komputer saya dan mengubah file-file ini, tetapi saya tidak terlalu khawatir tentang itu. Saya hanya ingin skrip saya berfungsi.

Randyman99
sumber