1 votos

Porcentaje de ruptura de caracteres Terminal

Si escribo el % en la Terminal, se rompe ese shell y todos los nuevos que abro hasta el reinicio:

$ seq 10 | parallel -j50% "echo Hi {}"
-bash: printf: `"': invalid format character

¿Alguien sabe a qué se debe esto?

Para ampliar un poco más, si abro un Terminal, y echo "100%" esto sucede:

Last login: Fri Nov 21 08:28:47 on ttys033
~$ echo "100%"
-bash: printf: `"': invalid format character

0; echo "100~$ 
-bash: printf: `"': invalid format character
7;file://mac-122667.dhcp.fnal.gov/Users/perdue~$ 
-bash: printf: `"': invalid format character
7;file://mac-122667.dhcp.fnal.gov/Users/perdue~$ 
-bash: printf: `"': invalid format character

Cada vez que presiono RET después de poner un carácter de porcentaje, el Terminal parpadea e imprime una declaración de error sobre printf . En realidad estuve trabajando en esto más después de publicar la pregunta y una cosa que hice fue actualizar bash :

~$ echo $BASH_VERSION 
4.3.30(1)-release

Esto ayuda. Anteriormente era Bash 2.algo (si mal no recuerdo - sea cual sea el valor por defecto de Mountain Lion). En esa versión de Bash, cada ventana de Terminal abierta, aparte de la que ponía el % estaba bien, pero cada uno de los nuevos que abría también se corrompía y nada podía recuperar el Terminal más que reiniciar.

Ahora, con Bash 4.3, puedo escribir un comando para que el prompt vuelva a ser normal. Y las nuevas ventanas de Terminal también están bien.

Pero - todavía no puedo usar % en los comandos que pongo en la Terminal. Afortunadamente, no lo necesito a menudo, pero cosas como awk simplemente no me funcionan en mi Mac.

Así que, mi $PS1 es:

~$ echo $PS1
\[\e[0;34m\]\W\[\e[0;31m\]$ \[\e[0m\]

Si esto parece confuso al principio, estos son los colores que estoy estableciendo en mi bash_profile:

# colours for use in prompts
RED="\[\e[0;31m\]"
GREEN="\[\e[0;32m\]"
YELLOW="\[\e[0;33m\]"
BLUE="\[\e[0;34m\]"
PURPLE="\[\e[0;35m\]"
CYAN="\[\e[0;36m\]"
export PS1="${BLUE}\W${RED}\$ ${NOCOLOR}"

Si yo echo "100%" con otra cuenta de usuario, ¡está bien! Así que claramente, me estoy disparando en el pie en alguna parte de mi .bash_profile . Lo cual es una pena, porque básicamente me gusta mi configuración, o eso creo, ¡ja!

Si alguien quiere ver mis archivos de puntos están ahora en GitHub . (Me da un poco de vergüenza mostrarlos, hay algo de chatarra ahí, jaja).

2voto

beroe Puntos 1605

Mirando su .bash_profile esta parece ser la línea más sospechosa:

trap 'printf "${OPENTITLEBAR} `history 1 | cut -b8-` - `pwd` ${CLOSETITLEBAR}"' DEBUG

Está haciendo un printf en el historial (que contendrá su % carácter).

No tengo ni idea de lo que pretende hacer (¿actualizar el título de la ventana con el último comando?), pero supongo que si lo comentas, el error dejará de producirse.

1voto

Analizar este tipo de problemas siempre es complicado. Normalmente creo una nueva cuenta sin ninguna configuración de bash para empezar desde cero (asumiendo que el problema no aparece ahí) y luego trabajo hacia arriba desde ahí añadiendo archivo de configuración por archivo de configuración (o línea por línea si es necesario).

Además de los sospechosos habituales ( .bash_profile , .profile o .bashrc ), también puede ser que quiera ver .inputrc , /etc/profile y cualquier archivo procedente de uno de ellos.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X