Por que o comando bash “complete” não funciona dentro de ~ / .bash_profile?

1

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"

    
por Yetanotherjosh 29.06.2010 / 07:37

1 resposta

0

O que acontece se você tentar:

complete | grep ssh

uma entrada aparece?

Eu recomendaria a instalação do pacote bash-completion .

    
por 29.06.2010 / 15:47

Tags