COMP_LINE não definido, apesar de o bash completion estar instalado


0

Estou usando o pacote de conclusão do homebrew no OSX, que está instalado em / usr / local / etc / bash_completion. Ele está funcionando bem, mas há muitas extensões para ele que dependem de várias variáveis ​​de ambiente que começam com COMP_, como COMP_LINE. Essas variáveis ​​de ambiente, infelizmente, não estão sendo exportadas para o meu ambiente bash, apesar do fato de que os arquivos apropriados estão sendo fornecidos. Aqui está a área aplicável no meu .bash_profile:

# bash completion
if [ -f `brew --prefix`/etc/bash_completion ]; then
  . `brew --prefix`/etc/bash_completion
  . /usr/local/etc/bash_completion.d/git-completion.bash
fi

No entanto, o COMP_LINE não está definido, o que impede que outros complementos de conclusão funcionem:

> env | grep COMP_LINE
>

Alguma idéia de por que as variáveis ​​de ambiente não estão definidas? Agradeço antecipadamente pelo seu tempo.

Respostas:


0

$COMP_LINE não é uma variável de ambiente. É uma variável interna e só é visível para as funções de conclusão, não para outro uso de shell. (A maioria das outras variáveis ​​internas são visíveis declare.)


Eu acho que estou confuso porque este script parece estar esperando que a variável esteja disponível no ambiente e não o encontre: github.com/xaviershay/dotfiles/blob/master/bin/rake-complete.rb
cayblood

O script espera isso, porque é normalmente invocado dentro de um manipulador de conclusão Como um manipulador de conclusão). Eu estava errado sobre o tipo de variável, embora - parece que COMP_* variáveis está sendo exportado para o meio ambiente. Eu tentei o rake-complete roteiro e funciona ...
grawity

Obrigado, parece que o script de conclusão estava realmente funcionando, mas havia um bug nele que estava ignorando a primeira tarefa de rake na lista, que por acaso era a que eu estava tentando executar.
cayblood
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.