A conclusão da guia Bash falha dentro da substituição do comando

2

Eu tenho usado o kill $ (pidof) para encerrar programas por um tempo, e desde a noite passada, toda vez que tento usar a conclusão de tabulação dentro do $() ele gera um erro,

bash: unexpected EOF while looking for matching ')'
bash: syntax error: unexpected end of file

A conclusão de tabulação funciona bem fora da substituição de comandos.

Eu acho que minha pergunta é onde estão os arquivos de configuração para conclusão de tabulação localizados em um sistema Ubuntu? Se alguém teve esse problema específico, ou pode ver claramente o que eu não posso, como corrigir isso e / ou por que isso ocorreria? (Eu sempre quero saber o porquê.) E, se não for assim, até onde e como devo começar minha investigação sobre esse problema, seria muito apreciado.

UPDATE

A conclusão da guia

após $(pidof não está mais gerando um erro, mas agora não está funcionando. Eu nunca realmente mexi com qualquer coisa antes, mas não tenho medo de sujar as mãos. Qualquer orientação muito apreciada.

    
por blanket_cat 27.08.2014 / 04:23

1 resposta

2

Acho que minha pergunta é onde estão os arquivos de configuração para conclusão de tabulação localizados em um sistema Ubuntu?

No Ubuntu, a biblioteca de conclusão bash vive em /usr/share/bash-completion/bash_completion .

Quando você inicia um shell, essa biblioteca pode ser obtida de várias maneiras, por exemplo,

  • ~/.bashrc - > /etc/bash_completion - > /usr/share/bash-completion/bash_completion

  • /etc/profile - > /etc/profile.d/bash_completion.sh - > /usr/share/bash-completion/bash_completion

Se alguém teve esse problema específico, ou pode ver claramente o que eu não posso, como corrigir isso e / ou porque isso ocorreria? (Eu sempre quero saber o porquê.)

Recentemente respondi uma questão relacionada no AskUbuntu (e encontrou sua pergunta no processo), então procure por detalhes, mas em poucas palavras, este é um bug conhecido .

Para corrigir isso, você pode:

  1. Substituir

    [[ ${!2} == \$* ]] && eval $2=${!2}
    

    com

    [[ ${!2} == \$\'* ]] && eval $2=${!2}
    

    na função _quote_readline_by_ref no arquivo /usr/share/bash-completion/bash_completion (não recomendado); ou

  2. Confira a mais nova versão do Git da biblioteca de conclusão do bash e use isso - o bug parece para ser corrigido nesta versão.

Você não conseguirá concluir a tabulação dentro da substituição de comando, trabalhando novamente com qualquer uma dessas soluções, mas, pelo menos, você não verá mais essa mensagem de erro.

Para realmente obter a conclusão da tabulação dentro do trabalho de substituição de comandos, você terá que reverter para uma versão anterior do Bash ( onde eu ouço que estava funcionando ), ou aguarde a biblioteca realmente corrigir esse problema com o Bash 4.3.

    
por 23.01.2015 / 17:43

Tags