ฉันมีสคริปต์ที่ให้การควบคุมความสว่างแบ็คไลท์ของฉันอย่างละเอียดและต้องsudo
ดำเนินการ เป็นหลักนี้:
backlight="/sys/class/backlight/acpi_video0/brightness"
echo $1 | tee $backlight
~/bin/backlight-adjust
และชีวิตที่ สคริปต์ต้องการsudo
สิทธิ์เนื่องจากtee $backlight
กำลังเขียนไปยังตำแหน่งที่มีสิทธิ์ sudo
ดังนั้นมันจะล้มเหลวถ้ามันไม่ได้ทำงานด้วย
วิธีการนี้มีปัญหาเพราะฉันไม่สามารถวิ่งsudo backlight-adjust
ได้เพราะ~/bin
ไม่ได้อยู่$PATH
ในsudo
สภาพแวดล้อม แต่ในสภาพแวดล้อมของฉันเท่านั้น ดังนั้นฉันต้องวิ่งsudo env "PATH=$PATH" backlight-adjust
หรืออะไรทำนองนั้น
หรือฉันอาจจะเขียนมันแบบนี้
backlight="/sys/class/backlight/acpi_video0/brightness"
echo $1 | sudo tee $backlight
และแจ้งรหัสผ่านให้ฉัน
วิธีที่สองใช้งานได้ดีกว่าสำหรับฉันเพราะฉันไม่ต้องจำให้พิมพ์ sudo; มันจะทำให้ฉัน และฉันสามารถรักษา$PATH
เหมือนเดิม โดยรวมแล้วรู้สึกสะดวกกว่า แต่มีเหตุผลใดที่ฉันไม่ควรทำอย่างที่สอง?
(ฉันใช้ Xubuntu 14.04 และเชลล์ของฉันคือ GNU ทุบตี 4.2.45 ถ้านั่นสร้างความแตกต่าง)
sudo
จะเก็บ$PATH
ตามจริงดังนั้นฉันจึงไม่มีปัญหานี้