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.


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.


À 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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.