Actualizaciones automáticas de mensajes de BASH con información del repositorio de Mercurial

2

He seguido las instrucciones descritas por Steve Losh para colorear y formatear mi mensaje bash, sin embargo, el mensaje no se actualiza.

Mi export PS1línea se ve así:

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

Sí, todos esos $txtxxxestán definidos.

Todo funciona como se esperaba, tanto dentro como fuera de un repositorio, pero tengo source ~/.bash_profileque obtener constantemente el aviso para actualizar.

¿Me estoy perdiendo de algo? ¿Hay alguna manera de que se actualice cada vez que ejecuto un comando, como lo demuestra en la captura de pantalla más abajo en la página?

Estoy usando Mac OSX 10.5 (Leopard), con Terminal y / o iTerm.

Austin Hyde
fuente

Respuestas:

1

Debe escapar de los signos de dólar para que la sustitución del comando no se evalúe hasta que se emita la solicitud:

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

O, si observa en esa página, usa comillas simples que también evitan la expansión de la sustitución de comandos hasta que se emita el mensaje:

export PS1='\n\[$txtgrn\]\w\[$txtrst\]$(hg_in_repo)\[$txtylw\]$(hg_branch)\[$txtrst\]$(hg_dirty)\n\[$txtcyn\]\$\[$txtrst\] '
Dennis Williamson
fuente