ความแตกต่างระหว่าง $ LOGNAME และ logname


12

เวลาecho $LOGNAMEหรือlognameคำสั่งที่รันตามปกติจะได้ผลลัพธ์เดียวกันดังนี้:

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

ดังนั้นมีความแตกต่างระหว่างพวกเขา?

คำตอบ:


17

จากตัวแปรสภาพแวดล้อม ,

$LOGNAMEเหมือนกับ$USERที่ให้

ชื่อของผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน ตัวแปรนี้ถูกตั้งค่าโดยระบบ คุณอาจไม่ควรเปลี่ยนค่าด้วยตนเอง

จาก man logname

logname - พิมพ์ชื่อเข้าสู่ระบบของผู้ใช้


มีการใช้งานแตกต่างกันตามตัวอย่างต่อไปนี้:

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

ที่นี่คุณสามารถเห็นความแตกต่างหลังจากล็อกอินเป็นรูทในเทอร์มินัล

  • $LOGNAMEให้ชื่อของผู้ใช้ที่เข้าสู่ระบบในปัจจุบันใน terminal (เช่นroot)
  • ในขณะที่lognameพิมพ์ชื่อเข้าสู่ระบบของผู้ใช้ที่เข้าสู่ระบบเซสชั่น (เช่นpandya)


6

ชื่อบันทึกยูทิลิตี้เสียใน 16.04 ซึ่งเห็นได้ชัดว่ามีวัตถุประสงค์เพราะเป็นไปได้ที่จะแฮ็กค่าที่ส่งคืนซึ่งอาจเป็นข้อบกพร่องด้านความปลอดภัย https://bugzilla.gnome.org/show_bug.cgi?id=747046 ฉันใช้ logname ในบางสคริปต์และพบว่ามีประโยชน์เพราะมันคืนค่าเดิม (ชื่อเข้าสู่ระบบของฉัน) ไม่ว่าฉันจะเรียกมันมาจาก ระดับของฉันเองหรือจากการร้องขอ sudo ในขณะที่ตัวแปรสภาพแวดล้อม $ USER และ $ LOGNAME ทำไม่ได้ ฉันไม่กังวลเกี่ยวกับการแฮ็กข้อมูลลงในคอมพิวเตอร์ของฉันและแก้ไขค่าที่ส่งคืน อนิจจา .... ฉันพบวิธีแก้ปัญหาแล้ว ฉันสร้างไฟล์ในโฮมไดเร็กตอรี่ของฉันเช่นนั้น

echo $USER > ~/.logname

เมื่อฉันต้องการเข้าถึง logname ของฉัน (เช่นการกำหนดตัวแปร Bash g_logname) ฉันจะทำดังนี้:

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

สิ่งนี้ใช้ได้กับฉันไม่ว่าจะเป็นตัวฉันเองหรือในระดับรูตผ่าน sudo ซึ่งรักษาการมอบหมาย "~" เป็นโฮมไดเร็กตอรี่ของฉัน ฉันสามารถสร้างไฟล์. logname สำหรับโฮมไดเร็กตอรี่ของผู้ใช้แต่ละคนบนระบบ ใช่บางคนสามารถแฮ็คเข้าสู่คอมพิวเตอร์ของฉันและเปลี่ยนไฟล์เหล่านี้ แต่ฉันไม่ได้กังวลเกี่ยวกับเรื่องนั้น ฉันแค่อยากให้สคริปต์ทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.