zsh - développer complètement le chemin binaire sur <tab>

10

Dans mon comportement zsh actuel, appuyer sur tab après avoir tapé "sudo" ajoute juste un espace.

$ sudo ...

Ce que je veux vraiment, c'est que l'onglet se développe complètement sur le chemin du binaire qu'il est sur le point d'exécuter lorsque j'appuie sur l'onglet, ce qui me permet de voir ce qui sera exécuté:

$ /usr/bin/sudo ...

Le but est de se protéger contre le cas où l'utilisateur local sur ma machine est piraté, une entrée ajoutée à ma $PATHvariable et 'sudo' exécute un programme malveillant, ce qui serait une escalade facile à rooter.

Ali
la source
Il existe une autre solution qui n'implique pas de reliure d'onglet. Ajoutez le nom de la commande avec =et appuyez sur tab après la commande, et il développera le nom de la commande en chemin complet.
Mischa Arefiev

Réponses:

7

Utilisez la bindkeycommande intégrée pour lier les clés aux commandes Zsh, comme ceci:

bindkey "^I" expand-cmd-path 

"^I"est Tab. Vous pouvez simplement déposer cette ligne dans votre ~/.zshrcfichier. Attention: cela interrompra la saisie automatique des arguments.

Mischa Arefiev
la source
À votre santé! De toute évidence, ce n'est pas une solution idéale, je l'ai donc lié à Ctrl-O à la place. Cependant, il n'y a pas beaucoup de binaires qui acceptent les entrées de mot de passe (sudo, ssh, gpg, ...), donc je suis heureux de simplement appuyer sur Ctrl-O chaque fois que j'utilise l'un de ceux-ci. ne résout pas le problème dans son intégralité, car toute personne ayant accès à mon compte peut le subvertir via .zshrc ou xmonad.hs, mais m'y aide!
Ali