Yanıtlar:
Gönderen Çevre değişkenleri ,
$LOGNAME
aynıdır $USER
verir
Oturum açmış olan kullanıcının adı. Bu değişken sistem tarafından ayarlanır. Muhtemelen değerini elle değiştirmemelisiniz.
itibaren man logname
logname - kullanıcının oturum açma adını yazdır
Expained farklı kullanılan aşağıdaki örnekle:
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:~$
Burada terminalden root olarak giriş yaptıktan sonra farkı görebilirsiniz,
$LOGNAME
terminalde oturum açmış olan kullanıcının adını verir (yani root
)logname
açan kullanıcının oturum açma adını yazdır (ör. pandya
)Yardımcı program logname 16.04'te, görünüşte bilerek kırılmıştır, çünkü döndürdüğü değeri hacklemek mümkündür, bu bir güvenlik kusuru olabilir. https://bugzilla.gnome.org/show_bug.cgi?id=747046 Bazı komut LogName kullanarak ve kullanışlı ben a dan çağırarak olup olmadığını her zaman aynı değere (benim giriş adı) döndürdüğü için bulunmuştu kendi düzeyimden veya sudo çağırmadan kaynaklanırken, $ USER ve $ LOGNAME ortam değişkenleri bunu yapmaz. Birinin bilgisayarıma girmesi ve döndürdüğü değeri değiştirmesinden endişe etmiyordum. Eyvah .... Bir çözüm buldum. Giriş dizinimde böyle bir dosya oluşturdum
echo $USER > ~/.logname
Logname (örneğin, bir Bash değişkeni g_logname atama) erişmek istediğinizde, ben bunu böylece:
declare g_logname="$(<~/.logname)";
Bu benim için, ister kendim ister kök dizinde sudo üzerinden olsun, "~" giriş dizini olarak atamayı sürdürür. Sistemdeki her kullanıcının giriş dizini için bir .logname dosyası oluşturabilirim. Evet, birisi bilgisayarıma girip bu dosyaları değiştirebilir, ancak bunun için gerçekten endişelenmiyorum. Sadece senaryolarımın çalışmasını istiyorum.