zsh - ขยายพา ธ ไบนารีแบบเต็มบน <tab>


10

ในพฤติกรรม zsh ปัจจุบันของฉันกดปุ่มแท็บหลังจากพิมพ์ "sudo" เพียงแค่เพิ่มช่องว่าง

$ sudo ...

สิ่งที่ฉันต้องการคือให้แท็บขยายอย่างเต็มที่ไปยังเส้นทางของไบนารีที่จะดำเนินการเมื่อฉันกดแท็บทำให้ฉันเห็นสิ่งที่จะทำงาน:

$ /usr/bin/sudo ...

เป้าหมายคือเพื่อป้องกันกรณีที่ผู้ใช้ในเครื่องของฉันถูกแฮกรายการที่เพิ่มลงใน$PATHตัวแปรของฉันและ 'sudo' เรียกใช้โปรแกรมที่เป็นอันตราย


มีวิธีแก้ไขปัญหาอื่นที่ไม่เกี่ยวข้องกับการ rebinding แท็บ เติมชื่อคำสั่งด้วย=และกดแท็บหลังคำสั่งและจะขยายชื่อคำสั่งไปยังพา ธ เต็ม
Mischa Arefiev

คำตอบ:


7

ใช้bindkeyคำสั่ง builtin เพื่อผูกคีย์กับคำสั่ง Zsh ดังนี้:

bindkey "^I" expand-cmd-path 

"^I"แท็บอยู่ที่ไหน คุณสามารถวางบรรทัดนี้ลงใน~/.zshrcไฟล์ของคุณ คำเตือน: จะทำให้การเติมข้อความอัตโนมัติของอาร์กิวเมนต์ขัดแย้งกัน


ไชโย! เห็นได้ชัดว่านี่ไม่ใช่โซลูชันที่สมบูรณ์แบบดังนั้นฉันจึงผูกมันไว้กับ Ctrl-O แทน อย่างไรก็ตามมีไม่กี่ไบนารีที่รับรหัสผ่าน (sudo, ssh, gpg, ... ) ดังนั้นฉันยินดีที่จะกด Ctrl-O เมื่อใดก็ตามที่ฉันใช้หนึ่งในนั้นฉันควรชี้ให้เห็นว่าสิ่งนี้ ไม่ได้แก้ปัญหาทั้งหมดเนื่องจากทุกคนที่มีสิทธิ์เข้าถึงบัญชีของฉันสามารถทำลายมันผ่าน. zshrc หรือ xmonad.hs แต่ให้ฉันไปที่นั่น!
Ali
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.