Esta máquina Ubuntu está mostrando erros quando eu inicio um novo terminal.
O problema é este:
Quando a conclusão do bash é originada ( . /usr/share/bash-completion/bash_completion ), o shell que está ocorrendo não é bash e algumas definições de variável com listas local words=() estão falhando (porque somente bash entende as listas).
Minha solução era chamar explicitamente com bash /usr/share/bash-completion/bash_completion , mas gostaria de saber por que outro shell está sendo chamado quando abro o terminal. Eu pensei que, como o bash é meu padrão, ele também seria usado durante o fornecimento.
Eu fiz um echo $0 antes de chamar o arquivo de conclusão do bash e a saída é bash .
O que faria com que o bash não fosse usado para terceirização?
Responder a perguntas dos comentários:
Isso acontece quando eu inicio um novo console, o que significa que o kernel iniciará uma nova janela de terminal, chamando o ~/.profile , que por sua vez faz um . "$HOME/.bashrc" , que por sua vez fornecerá a conclusão do bash ( . /usr/share/bash-completion/bash_completion )
Eu não tenho um arquivo ~/.bash_completion .
Eu não posso colocar o echo "$0" dentro do bash_completion porque ele falhará e não será executado.
Meus .bashrc e .profile são os padrões que vêm com o Ubuntu. Eu não tenho um .bash_profile . Você pode encontrá-los em seu Ubuntu 14.04 local em /etc/skel/