bash-completion somente após o sourcing .bash_profile

1

Eu tenho o bash-completion instalado usando macports e seguindo as linhas no meu .bash_profile

if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi

mas a conclusão não funciona quando eu abro o Terminal, no entanto, ele começa a trabalhar após o sourcing .bash_profile ou depois de 'bash -l'.

Estou executando o OSX 10.6, nas preferências do Terminal há "O shell é aberto com: Shell de login padrão (/ usr / bin / login)" selecionado.

Resolvido: O que eu perdi é a linha em Como usar o bash-completion

Make sure you add this after any PATH manipulation as otherwise the bash-completion will not work correctly.

quando eu movi as linhas depois da manipulação do PATH, tudo funciona bem.

    
por liborw 31.03.2011 / 23:55

1 resposta

1

Eu usaria o comando chsh para ter certeza de que seu shell é realmente Bash; se seu shell for /bin/sh em vez de /bin/bash , o Bash irá imitar um shell histórico e não lerá ~/.bash_profile .

De man bash :

If bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible, while conforming to the POSIX standard as well. When invoked as an interactive login shell, or a non-interactive shell with the --login option, it first attempts to read and execute commands from /etc/profile and ~/.profile, in that order.

[...]

Since a shell invoked as sh does not attempt to read and execute commands from any other startup files, the --rcfile option has no effect.

    
por 01.04.2011 / 05:30