zsh - w pełni rozwiń ścieżkę binarną na <tab>

10

W moim obecnym zachowaniu zsh naciśnięcie klawisza Tab po wpisaniu „sudo” po prostu dodaje spację.

$ sudo ...

To, czego naprawdę chcę, to aby karta w pełni rozwinęła się do ścieżki pliku binarnego, który ma wykonać po naciśnięciu klawisza Tab, pozwalając mi zobaczyć, co zostanie uruchomione:

$ /usr/bin/sudo ...

Celem jest ochrona przed przypadkiem włamania się do lokalnego użytkownika na mojej maszynie, dodania wpisu do mojej $PATHzmiennej, a „sudo” uruchamia szkodliwy program, który łatwo byłoby zrootować do rootowania.

Ali
źródło
Istnieje inne rozwiązanie, które nie wymaga zakładki ponownego wiązania. Wpisz nazwę polecenia za pomocą =i naciśnij klawisz tab po poleceniu, a rozwinie ono nazwę polecenia do pełnej ścieżki.
Mischa Arefiev

Odpowiedzi:

7

Użyj bindkeywbudowanego polecenia, aby powiązać klucze z poleceniami Zsh, w następujący sposób:

bindkey "^I" expand-cmd-path 

gdzie "^I"jest Tab. Możesz po prostu upuścić tę linię do swojego ~/.zshrcpliku. Ostrzeżenie: spowoduje to przerwanie automatycznego uzupełniania argumentów.

Mischa Arefiev
źródło
Twoje zdrowie! Oczywiście nie jest to idealne rozwiązanie, więc zamiast tego związałem to z Ctrl-O. Jednak nie ma wielu plików binarnych, które wymagają wprowadzenia hasła (sudo, ssh, gpg, ...), więc cieszę się, że mogę nacisnąć Ctrl-O, ilekroć używam jednego z nich. Powinienem również zauważyć, że to nie rozwiązuje całego problemu, ponieważ każdy, kto ma dostęp do mojego konta, może go obalić przez .zshrc lub xmonad.hs, ale pomaga mi w tym!
Ali