นอกจากนี้ตัวแปรเหล่านี้จะจับคู่กับชื่อผู้ใช้ที่เข้าสู่ระบบในปัจจุบันอยู่เสมอหรือไม่ ฉันสามารถสมมติความพร้อมใช้งานในระบบ Unix (- like) อื่น ๆ ได้หรือไม่?
ฉันยังสงสัยด้วยว่าทำไมจึงใช้whoamiแทนการอ่านตัวแปรเหล่านี้
USERและUSERNAMEเป็นตัวแปรสภาพแวดล้อมทั่วไปซึ่งหมายความว่าหากคุณต้องการคุณสามารถตั้งค่าให้เป็นค่าใดก็ได้ USER=xyzเพียงพิมพ์ กล่าวอีกนัยหนึ่งแม้ว่าตัวแปรเหล่านั้นจะมีอยู่ แต่ก็ไม่รับประกันว่าค่าเหล่านั้นจะตรงกับชื่อผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน
guaranteeฉันหมายถึงค่าเริ่มต้น (สมมติว่าผู้ใช้ไม่ได้เปลี่ยน)
sudo whoamiและsudo echo $USER
sudo echo $USERขยายเปลือก$USER, แล้วsudoเรียก แน่นอนว่ามันไม่ได้สร้างผลลัพธ์ที่เหมือนwhoamiกัน ชอบsudo whoami, sudo sh -c 'echo $USER'ไม่ (โดยทั่วไป) rootเอาท์พุท เกี่ยวกับความคิดเห็นของคุณเกี่ยวกับการwhoamiใช้ EUIDโปรดทราบว่าsudo whoamiจะให้ผลลัพธ์rootแม้ว่าจะwhoamiใช้ UID ก็ตาม sudoตั้งค่าทั้ง EUID และ UID สำหรับคำสั่งที่เรียกใช้ (ยกเว้นในสถานการณ์ที่ผิดปกติอย่างยิ่งที่คุณกำหนดค่าให้ทำงานอย่างอื่น) เปรียบเทียบไปsudo id -u sudo id -ru
manหน้าwhoamiรายงานชื่อที่เชื่อมโยงกับ ID ผู้ใช้ที่มีประสิทธิภาพของคุณ ซึ่งหมายความว่ามันจะส่งคืนสิ่งที่แตกต่างถ้าคุณใช้sudoหรือเรียกใช้ปฏิบัติการ setuid หากคุณได้sudoตั้งค่าลองsudo whoamiตัวอย่าง