O que acontece se você tentar:
complete | grep ssh
uma entrada aparece?
Eu recomendaria a instalação do pacote bash-completion .
Contexto de fundo: Eu quero que o comando ssh no terminal OS X complete os nomes de host que eu uso com freqüência. No Ubuntu, o ssh parece inteligente o suficiente para ser capaz de aba tabular qualquer hostname que eu tenha no meu arquivo ~ / .ssh / config. Mas o OS X não parece ter esse comportamento, então estou tentando forçar manualmente a conclusão de tabulação para alguns hosts que eu uso com muita frequência.
Se eu abrir um terminal e executar isso:
$ complete -W foo.com ssh
Em seguida, digitar ssh f<tab>
será concluído em ssh foo.com
Pergunta: quando coloco esse comando no meu ~ / .bash_profile, ele não funciona mais. Por quê?
Tenho certeza de que o ~ / .bash_profile está sendo executado, pois tenho outras coisas lá (configurações de prompt, etc) que estão entrando em vigor na minha sessão de terminal.
Não deveria colocar coisas no meu ~ / .bash_profile ser o equivalente a executar automaticamente esses comandos no terminal na inicialização da sessão? É como se o comando complete
fosse executado dentro de um contexto perdido, enquanto outras coisas persistem (como minha configuração de prompt do PS1).
Obrigado por qualquer insight aqui, especialistas da festa!
Atualizar
Usar o completo para listar minha configuração me mostrou meu erro. Estou usando várias instruções, por exemplo:
complete -W foo.com ssh; complete -W bar.com ssh
E somente o último entra em vigor (cada um substitui o anterior). Então, eu preciso colocá-los todos em um comando, ou seja:
complete -W 'foo bar' ssh
Então, essa questão não é sobre ~ / .bash_profile, é sobre entender o jeito certo de usar "complete"