Pregunta ¿Por qué el comando bash "complete" no funciona dentro de ~ / .bash_profile?


Contexto de fondo: Quiero el comando ssh en el terminal OS X para completar tabuladores de nombres de host que uso con frecuencia. En Ubuntu, ssh parece lo suficientemente inteligente como para poder tab-completar cualquier nombre de host que tengo en mi archivo ~ / .ssh / config. Pero OS X no parece tener este comportamiento, por lo que estoy intentando forzar manualmente la finalización de pestañas para algunos hosts que uso con mucha frecuencia.

Si abro una terminal y ejecuto esto:

$ complete -W foo.com ssh

Luego escribiendo ssh f<tab> completará en ssh foo.com

Pregunta: cuando pongo tal comando en mi ~ / .bash_profile, ya no funciona. ¿Por qué?

Estoy seguro de que ~ / .bash_profile se está ejecutando, ya que tengo otras cosas allí (configuraciones de aviso, etc.) que están teniendo efecto en mi sesión de terminal.

¿No debería poner cosas en mi ~ / .bash_profile ser el equivalente de ejecutar automáticamente esos comandos en el terminal al inicio de la sesión? Es como si el complete comando se ejecuta dentro de un contexto que se pierde, mientras que otras cosas persisten (como mi configuración de solicitud de PS1).

Gracias por cualquier idea aquí, expertos en bash!

Actualizar

El uso de completo para mostrar mi configuración me mostró mi error. Estoy usando múltiples declaraciones, es decir:

complete -W foo.com ssh; complete -W bar.com ssh

Y solo el último entra en vigencia (cada uno reemplaza al anterior). Entonces, necesito ponerlos todos en un solo comando, es decir:

complete -W 'foo bar' ssh

Entonces, esta pregunta no se trata de ~ / .bash_profile, se trata de entender la forma correcta de usar "completo"


1


origen




Respuestas:


¿Qué pasa si intentas:

complete | grep ssh

aparece una entrada?

Yo recomendaría instalar el bash-completion paquete.


0



Gracias por el puntero. El uso de completo para mostrar mi configuración me mostró mi error. Actualicé mi pregunta y cerré esto. ¡Gracias! - Yetanotherjosh