zsh - повністю розширити бінарний шлях на <tab>


10

У моєму поточному поведінці zsh, натискання на вкладку після введення "sudo" просто додає пробіл.

$ sudo ...

Мені дуже хочеться, щоб вкладка повністю розширилася на шлях двійкового файлу, який він збирається виконати, коли натиснув вкладку, що дозволить мені побачити, що буде запущено:

$ /usr/bin/sudo ...

Метою є захист від випадків, коли локальний користувач на моїй машині зламаний, запис, доданий до моєї $PATHзмінної, і 'sudo' запускає шкідливу програму, яка була б легкою ескалацією до коріння.


Є ще одне рішення, яке не включає в себе вкладку перезавантаження. Додайте ім'я команди =та натисніть на вкладку після команди, і це розгорне ім'я команди на повний шлях.
Mischa Arefiev

Відповіді:


7

Використовуйте bindkeyвбудовану команду, щоб прив'язати клавіші до команд Zsh, як це:

bindkey "^I" expand-cmd-path 

де "^I"Таб. Ви можете просто впустити цей рядок у свій ~/.zshrcфайл. Попередження: це порушить автозавершення аргументів.


Ура! Очевидно, що це не ідеальне рішення, тому я замість цього прив’язав його до Ctrl-O. Однак не так багато двійкових файлів, які беруть введення пароля (sudo, ssh, gpg, ...), тому я радий просто натиснути Ctrl-O, коли я використовую один із них. Я також повинен зазначити, що це не вирішує всієї проблеми, оскільки кожен, хто має доступ до мого облікового запису, може підривати її через.
Алі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.