ฉันมีนามแฝงที่ส่งผ่านพารามิเตอร์บางอย่างไปยังเครื่องมือที่ฉันใช้บ่อย บางครั้งฉันวิ่งเป็นตัวเองบางครั้งภายใต้ sudo น่าเสียดายที่ sudo ไม่รู้จักนามแฝง
ใครบ้างมีคำใบ้เกี่ยวกับวิธีการส่งนามแฝงผ่าน?
ในกรณีนี้ฉันมีตัวเลือกมากมายสำหรับ perl เมื่อฉันกำลังดีบั๊ก:
alias pd='perl -Ilib -I/home/myuser/lib -d'
บางครั้งฉันต้องแก้จุดบกพร่องเครื่องมือของฉันเป็นรูทดังนั้นแทนที่จะรัน:
pd ./mytool --some params
ฉันต้องใช้มันภายใต้ sudo ฉันได้ลองหลายวิธี:
sudo eval $(alias pd)\; pd ./mytool --some params
sudo $(alias pd)\; pd ./mytool --some params
sudo bash -c "$(alias pd)\; pd ./mytool --some params"
sudo bash -c "$(alias pd); pd ./mytool --some params"
sudo bash -c eval\ "$(alias pd)\; pd ./mytool --some params"
sudo bash -c eval\ "'$(alias pd)\; pd ./mytool --some params'"
ฉันหวังว่าจะเป็นวิธีที่กระชับและกระชับเพื่อให้แน่ใจว่านามแฝง pd ปัจจุบันของฉันถูกใช้อย่างสมบูรณ์ (ในกรณีที่ฉันต้องบิดมันในภายหลัง) แม้ว่าความพยายามของฉันจะไม่รัดกุมก็ตาม ทางเลือกสุดท้ายของฉันคือการใส่มันลงในเชลล์สคริปและทำให้บางที่ sudo หาเจอ แต่นามแฝงนั้นมีประโยชน์มากในบางครั้งดังนั้นจึงเป็นทางเลือกสุดท้าย
A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded.