Ubuntu mudando de shell para mim

0

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/

    
por Alexandre Santos 11.05.2015 / 17:49

1 resposta

3

O problema não era o shell ou chsh ou qualquer coisa exótica. Era um alias idiota no local. Alguém achou que era uma boa idéia criar um alias que exibisse o endereço IP local e o nomeasse "local", de modo que a linha

local cword words=()

falhou não porque o shell não conseguia lidar com matrizes. Ele falhou porque o alias estava se expandindo e o () não fazia sentido lá.

    
por 13.05.2015 / 18:02