นอกจากนี้ตัวแปรเหล่านี้จะจับคู่กับชื่อผู้ใช้ที่เข้าสู่ระบบในปัจจุบันอยู่เสมอหรือไม่ ฉันสามารถสมมติความพร้อมใช้งานในระบบ 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
ตัวอย่าง