Como evitar avisos de subshells se a função em PROMPT_COMMAND não estiver definida?

2

Estou usando o seguinte código para obter um bom aviso (incluindo informações sobre o git, etc.):

function set_prompt {
    # magic happens in here ;)
}

export PROMPT_COMMAND='set_prompt'

No entanto, às vezes recebo o seguinte aviso depois de usar certos programas que fazem uso pesado do bash internamente:

bash: set_prompt: command not found

Um bom exemplo disso é o gerenciador de pacotes emerge do Gentoo, que mostra esse erro quando ele existe. Não é grande coisa - apenas parece feio e não quebra nada. Mas eu gostaria de me livrar disso de qualquer maneira.

Suponho que isso acontece porque a variável de ambiente PROMPT_COMMAND é herdada pelos shells do emerge, mas a função não é.

Existe alguma maneira de tornar a variável PROMPT_COMMAND não herdável? Ou outra maneira de evitar esse problema chato?

    
por ThiefMaster 23.12.2013 / 01:08

1 resposta

4

Não exporte PROMPT_COMMAND para o ambiente. O ambiente é para variáveis que são significativas para todos os programas. Mas PROMPT_COMMAND é útil apenas no bash, então deixe como uma variável shell. Não há sentido em tê-lo herdado por instâncias descendentes do bash: PROMPT_COMMAND é útil apenas em instâncias interativas do bash, e todas elas lêem .bashrc de qualquer maneira.

PROMPT_COMMAND='set_prompt'
    
por 23.12.2013 / 01:29