2008-09-19 17 views
7

Estoy usando la aplicación bash in os X Terminal, y mi $ PS1 personalizado se rompe cuando me desplazo por mi historial.Indicador Bash en la terminal OS X roto

PS1="${BLUE}\u${CYAN}@${RED}\h${BLUE}\w\n\[${red}\$${NC}\]" 

también trató PS1 = "$ {} AZUL \ u $ {} @ CYAN $ {ROJO} \ h $ {} AZUL \ w \ r \ n [$ {red} \ $$ {NC }] "

El problema parece estar en la nueva línea. He usado este prompt bash en Slackware no prob.

+0

por defecto o macports fiesta? – kch

Respuesta

8

Necesita el [y] para cada secuencia de escape; do $ BLUE y similares incluyen estos? Si no, deben estar entre corchetes con estas llamadas.

+0

Parece que es necesario en la última línea. no realmente requerido en una línea anterior. – Milhous

0

Si el problema parece ser con la nueva línea, intente poner \ r \ n en lugar de simplemente \ n y vea si hace una diferencia.

0

Tengo el mismo problema (en OS X) con su PS1. Si quito el \[ y \]

PS1="${BLUE}\u${CYAN}@${RED}\h${BLUE}\w\n${red}\$${NC}" 

Esto funciona bien. ¿Se necesitan los corchetes sqare? Nunca los he usado, pero a partir de the docs:

\[ empezar una secuencia de caracteres no imprimibles. Esto podría usarse para incrustar una secuencia de control de terminal en el aviso.

\] Termine una secuencia de caracteres que no sean de impresión.

+0

Intenté esto, pero cuando uso las teclas comedy previas, obtengo un residuo millermj @ Leonidas ~ $ find ./ -na – Milhous

0

Ahora he intentado

PS1="${BLUE}\u${CYAN}@${RED}\h${BLUE}\w${RED}\r\n\$\[${blue}\]" 

que parece funcionar Los soportes necesarios para que los comandos anteriores funcionan.

2

Para evitar este tipo de 'escapar' dificultades al necesidades inmediatas Évole a ser más complejo, esto debería ser un esqueleto para comenzar a crecer en:

function _my_prompt() 
{ 
    # magic goes here 
    my_prmpt=.... 
} 
PROMPT_COMMAND='_my_prompt' 
PS1="[\$my_prmpt] \$" 
2

que estaba teniendo el mismo problema al abrir una sesión remota (debian) sistemas. Como los valores escapados en .bashrc estaban todos muy bien entre corchetes, hice un poco de búsqueda en Google y descubrí que la causa podría ser diferencias en el tamaño de la ventana en el sistema local y el remoto. Añadiendo checkwinsize

shopt -s

a .bashrc en los sistemas remotos se ha solucionado el problema para mí.

Fuente: Bash mac http://forums.macosxhints.com/showthread.php?t=17068

Cuestiones relacionadas