4
วิธีที่เข้ากันได้กับ POSIX เพื่อรับชื่อผู้ใช้ที่เชื่อมโยงกับ ID ผู้ใช้
ฉันมักจะต้องการชื่อเข้าสู่ระบบที่เชื่อมโยงกับ ID ผู้ใช้และเนื่องจากมันพิสูจน์แล้วว่าเป็นกรณีการใช้งานทั่วไปฉันตัดสินใจที่จะเขียนฟังก์ชันเชลล์เพื่อทำสิ่งนี้ ในขณะที่ฉันใช้ดิสทริบิวชัน GNU / Linux เป็นหลักฉันพยายามเขียนสคริปต์ของฉันให้พกพาได้มากที่สุดและเพื่อตรวจสอบว่าสิ่งที่ฉันทำอยู่นั้นใช้กับ POSIX ได้ การแยกวิเคราะห์ /etc/passwd วิธีแรกที่ฉันพยายามคือการแยกวิเคราะห์/etc/passwd(โดยใช้awk) awk -v uid="$uid" -F: '$3 == uid {print $1}' /etc/passwd อย่างไรก็ตามปัญหาด้วยวิธีนี้คือการเข้าสู่ระบบอาจไม่ได้อยู่ในพื้นที่เช่นการตรวจสอบผู้ใช้อาจจะผ่าน NIS หรือ LDAP ใช้getentคำสั่ง การใช้getent passwdเป็นแบบพกพามากกว่าการแยกวิเคราะห์/etc/passwdเนื่องจากยังทำการสืบค้นฐานข้อมูล NIS หรือ LDAP ที่ไม่ใช่ท้องถิ่น getent - Wikipedia getent (1) - หน้าลินุกซ์ getent passwd "$uid" | cut -d: -f1 น่าเสียดายgetentที่ POSIX …