zsh - binären Pfad auf <tab> vollständig erweitern

10

In meinem aktuellen zsh-Verhalten wird durch Drücken der Tabulatortaste nach Eingabe von "sudo" nur ein Leerzeichen hinzugefügt.

$ sudo ...

Was ich wirklich möchte, ist, dass die Registerkarte vollständig auf den Pfad der Binärdatei erweitert wird, die ausgeführt werden soll, wenn ich auf die Registerkarte drücke, sodass ich sehen kann, was ausgeführt wird:

$ /usr/bin/sudo ...

Ziel ist es, vor dem Fall zu schützen, dass der lokale Benutzer auf meinem Computer gehackt, ein Eintrag zu meiner $PATHVariablen hinzugefügt und 'sudo' ein Schadprogramm ausführt, das eine einfache Eskalation zum Root darstellt.

Ali
quelle
Es gibt eine andere Lösung, bei der die Registerkarte nicht neu gebunden wird. Stellen Sie den Befehlsnamen mit vor =und drücken Sie nach dem Befehl die Tabulatortaste. Der Befehlsname wird dann in den vollständigen Pfad erweitert.
Mischa Arefiev

Antworten:

7

Verwenden Sie den bindkeyintegrierten Befehl, um Schlüssel wie folgt an Zsh-Befehle zu binden:

bindkey "^I" expand-cmd-path 

Wo "^I"ist Tab. Sie können diese Zeile einfach in Ihre ~/.zshrcDatei einfügen. Warnung: Die automatische Vervollständigung von Argumenten wird unterbrochen.

Mischa Arefiev
quelle
Prost! Dies ist eindeutig keine ideale Lösung, daher habe ich sie stattdessen an Strg-O gebunden. Es gibt jedoch nicht viele Binärdateien, die Passworteingaben vornehmen (sudo, ssh, gpg, ...). Daher bin ich froh, wenn ich eine davon verwende, einfach Strg-O drücken. Ich sollte auch darauf hinweisen löst nicht das gesamte Problem, da jeder, der Zugriff auf mein Konto hat, es über .zshrc oder xmonad.hs unterwandern kann, mich aber irgendwie dorthin bringt!
Ali