มันยิ่งขึ้นอยู่กับวิธีที่คุณเรียกโปรแกรมของคุณด้วยหรือsudo
เช่นในระบบที่ฉันเป็นในขณะนี้:su
.bashrc
COMMAND $HOME $USER Env. $PATH
1. sudo -i (root) root root [1]
2. sudo -s (USER) root USER /home/${USER}/bin:[1]
3. sudo /bin/bash (USER) root USER /home/${USER}/bin:[1]
4. sudo su (root) root USER [1]:/usr/games:/usr/local/games
5. sudo su - (root) root root [1]
โดยที่ [1] = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / sbin: / bin
Env = ตัวแปรสภาพแวดล้อมถูกรีเซ็ต 1 และ 5 นำมาจาก $ USER ใน 2,3,4
ดังนั้นสคริปต์หรือโปรแกรมที่จะเปิดตัวพร้อมกับตัวเลือกที่แตกต่างกันสามารถมองเห็นที่แตกต่างกัน$PATH, $HOMEเปลือกของมันสามารถอ่านที่แตกต่างกัน.bashrc, .profileและตัวแปรสภาพแวดล้อม $HOMEมันอ่านไฟล์ที่เกี่ยวข้องกับ ผู้ใช้แต่ละคนสามารถปรับเปลี่ยนสภาพแวดล้อมของเขาในวิธีที่แตกต่างกัน (ตัวแปร$PATH,, .bashrc, .profile, .bash_profile, alias ... ) โดยเฉพาะอย่างยิ่งผู้ใช้สามารถมีลำดับที่แตกต่างกันของไดเรกทอรีในของเขา$PATHและเป็นผลให้สคริปต์สามารถดำเนินการคำสั่งเช่นใน/home/$USER/binแทนจากนั้นหนึ่งในเส้นทางที่คาดหวังจากราก
คุณสามารถเรียกใช้โปรแกรมที่อยู่ภายใต้sudo -iตามที่คุณได้ลงทะเบียนเป็นรากที่มีsu -แต่คุณสามารถมีพฤติกรรมที่แตกต่างกันถ้าคุณใช้มันด้วยหรือsudo MyCommandsu -c MyCommand
จากman su:
ในส่วนคำอธิบาย: สภาพแวดล้อมในปัจจุบันมีการส่งผ่านไปยังเปลือกใหม่
ค่าของ$ PATH จะถูกรีเซ็ตเป็น / bin: / usr / bin สำหรับผู้ใช้ปกติหรือ / sbin: / bin: / usr / sbin: / usr / bin สำหรับ superuser
...
ในส่วนของตัวเลือก:
- , -l , --login
จัดเตรียมสภาพแวดล้อมคล้ายกับสิ่งที่ผู้ใช้คาดหวังว่าจะมีผู้ใช้เข้าสู่ระบบโดยตรง
จากมนุษย์ sudo
-i , --login
รันเชลล์ที่ระบุโดยรายการฐานข้อมูลรหัสผ่านของผู้ใช้เป้าหมายเป็นเชลล์ล็อกอิน ซึ่งหมายความว่าไฟล์ทรัพยากรเฉพาะการเข้าสู่ระบบเช่น. profile หรือ .login จะถูกอ่านโดยเชลล์ หากระบุคำสั่งคำสั่งจะถูกส่งไปยังเชลล์เพื่อดำเนินการผ่านตัวเลือกเชลล์ของ -c หากไม่ได้ระบุคำสั่งเชลล์เชิงโต้ตอบจะถูกดำเนินการ sudoพยายามเปลี่ยนเป็นโฮมไดเร็กทอรีของผู้ใช้นั้นก่อนรันเชลล์ คำสั่งทำงานกับสภาพแวดล้อมที่คล้ายกับที่ผู้ใช้จะได้รับในการเข้าสู่ระบบ ส่วนคำสั่งสภาพแวดล้อมในเอกสารคู่มือ sudoers (5) วิธีที่ตัวเลือก -i ส่งผลกระทบต่อสภาพแวดล้อมที่คำสั่งจะทำงานเมื่อมีการใช้นโยบาย sudoers