zsh: expande completamente la ruta binaria en <tab>

10

En mi comportamiento actual de zsh, presionar la pestaña después de escribir "sudo" solo agrega un espacio.

$ sudo ...

Lo que realmente quiero es que la pestaña se expanda completamente a la ruta del binario que está a punto de ejecutarse cuando presiono la pestaña, lo que me permite ver lo que se ejecutará:

$ /usr/bin/sudo ...

El objetivo es proteger contra el caso en el que el usuario local en mi máquina es pirateado, se agrega una entrada a mi $PATHvariable y 'sudo' ejecuta un programa malicioso, que sería una escalada fácil a la raíz.

Ali
fuente
Hay otra solución que no implica volver a vincular pestaña. Anteponga el nombre del comando =y presione tab después del comando, y expandirá el nombre del comando a la ruta completa.
Mischa Arefiev

Respuestas:

7

Use el bindkeycomando incorporado para vincular las teclas a los comandos de Zsh, de esta manera:

bindkey "^I" expand-cmd-path 

donde "^I"esta Tab. Simplemente puede colocar esta línea en su ~/.zshrcarchivo. Advertencia: romperá el autocompletado de argumentos.

Mischa Arefiev
fuente
¡Salud! Claramente, esta no es una solución ideal, así que la he vinculado a Ctrl-O. Sin embargo, no hay muchos binarios que toman entradas de contraseña (sudo, ssh, gpg, ...), así que estoy feliz de presionar Ctrl-O cada vez que estoy usando uno de esos. También debo señalar que esto no resuelve todo el problema ya que cualquier persona con acceso a mi cuenta puede subvertirlo a través de .zshrc o xmonad.hs, ¡pero me ayuda a llegar!
Ali