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/