¿Por qué este indicador bash actuando de manera extraña / desaparecer, y cómo puedo solucionarlo (OS X)?
Pregunta
Tengo que reconocer que yo uso un indicador bash un poco largo aliento:
--(username)-(Wed April 01|12:00:00)--(~ $
Recientemente, tuve la brillante idea de cambiarlo por lo que dependiendo del valor de salida del comando anterior, si el éxito, los elementos interiores de la () 's sería verde, y si fracaso, que sería de color rojo. Lo tengo trabajo en su mayor parte (algunos estados de salida impares cambiarán el color a otra cosa, pero estoy bien con ella), pero cuando se escribe un comando que es más de una línea, y hace que el terminal para desplazarse, la Desaparecerá el mensaje! Mi pronta funcionó bien cuando no había color, así que supongo que tiene que ver con mi escape de color, y en particular a mi no cerrada [ 's, pero no puedo precisarlo.
#.profile
export PS1='--(\e[$((32-${?}))m\u\e[0m)-(\e[$((32-${?}))m\d\e[0m|\e[$((32-${?}))m\T\e[0m)--(\e[$((32-${?}))m\w\e[0m \$ '
Gracias de antemano!
Solución
este debería resolver su problema.
Esto parece funcionar para me*
:
export PS1='--(\[\e[$((32-${?}))m\]\u\[\e[0m\])-(\[\e[$((32-${?}))m\]\d\[\e[0m\]|\[\e[$((32-${?}))m\]\T\[\e[0m\])--(\[\e[$((32-${?}))m\]\w\[\e[0m\] \$ '
*
bueno, en realidad export PS1='\u@\h:\w\$ '
funciona para mí
Para citar el mensaje relacionado, la respuesta se encuentra en la adición de \ [y \] en torno a todas las secuencias de color en su declaración PS1:
Antes de que tuviera el siguiente valor para PS1:
'\ e [0; 34m \ h: \ w [] \ $ \ e [0m'
lo que me dio un buen indicador azul de la siguiente forma
nombre de host: Trabajo de directorio [-número de comando] $
Sin embargo, tuve el mismo problema al ajuste de líneas de haberlo hecho. La solución fue insertar \ [y \] alrededor del ANSI escapa para que el shell sabe que no debe incluirlos en el cálculo de la línea de embalaje. Esto da como resultado el siguiente valor para PS1:
'\ [\ e [0; 34m \] \ h: \ w [] \ $ \ [\ e [m \]'
Otros consejos
http://mywiki.wooledge.org/BashFAQ/053 - tengo un símbolo de lujo con colores, y ahora no parece bash para saber cómo mi terminal es amplia . Líneas envuelven de forma incorrecta.
Por cierto; para tu referencia; aquí está mi PS1
que se parece a esto:
(fuente: lyndir.com )
\[$reset$bold$green\]\u@\h\[$blue\] \W \[$red\]${?/#0/\[$green\]}\$\[$reset\]
Observe cómo pongo todos los códigos de color en $parameters
para que sea más ordenado, pero lo más importante, porque usted debe utilizar tput
para generarlos . Ver:
http://mywiki.wooledge.org/BashFAQ/037 -? Cómo puedo imprimir texto en varios colores
Declaro mis parámetros de color en una secuencia de comandos de utilidad que obtiene proceden de mi ~/.bashrc
( y las secuencias de comandos que escribo) que se llama bashlib
.
En una nota final; poner su definición PS1
en ~/.bashrc
y no export
ella. No hay absolutamente ninguna razón por la que debe agregar su definición PS1
con el medio ambiente de cualquier y todos los procesos desovar de su cáscara.
Sólo parece que faltan los soportes de inicio y final alrededor de los escapes (antes de la primera '\ e' y después de la última 'm'):
PS1='--(\[\e[$((32-${?}))m\u\e[0m)-(\e[$((32-${?}))m\d\e[0m|\e[$((32-${?}))m\T\e[0m)--(\e[$((32-${?}))m\w\e[0m\] \$ '
Como se ha mencionado, el PS1 var no tiene por qué ser exportados:. Sólo su cáscara tiene que verlo