Atualizações automáticas de BASH com informações do repositório do Mercurial

2

Eu segui as instruções descritas por Steve Losh para colorir e formatar meu prompt bash No entanto, o prompt não é atualizado.

Minha linha export PS1 é assim:

export PS1="\n\[$txtgrn\]\w\[$txtrst\]$(hg_in_repo)\[$txtylw\]$(hg_branch)\[$txtrst\]$(hg_dirty)\n\[$txtcyn\]\$\[$txtrst\] "

Sim, todos os $txtxxx estão definidos.

Tudo funciona como esperado, tanto dentro como fora de um repositório, mas eu tenho que constantemente source ~/.bash_profile para obter o prompt para atualizar.

Estou faltando alguma coisa? Existe uma maneira de atualizá-lo toda vez que executo um comando, como ele demonstra na captura de tela mais abaixo na página?

Estou usando o Mac OSX 10.5 (Leopard), com Terminal e / ou iTerm.

    
por Austin Hyde 26.07.2010 / 21:41

1 resposta

1

Você precisa escapar dos sinais de dólar para que a substituição do comando não seja avaliada até que o aviso seja emitido:

export PS1="\n\[$txtgrn\]\w\[$txtrst\]\$(hg_in_repo)\[$txtylw\]\$(hg_branch)\[$txtrst\]\$(hg_dirty)\n\[$txtcyn\]\$\[$txtrst\] "

Ou, se você notar nessa página, ele usa aspas simples, o que também impede a expansão da substituição do comando até que o prompt seja emitido:

export PS1='\n\[$txtgrn\]\w\[$txtrst\]$(hg_in_repo)\[$txtylw\]$(hg_branch)\[$txtrst\]$(hg_dirty)\n\[$txtcyn\]\$\[$txtrst\] '
    
por 26.07.2010 / 22:08