Al principio esto fue un poco divertido, como jugar "Bash Roulette" ... pero ahora se está volviendo viejo jajaja
Cualquier comando en mi terminal que salga con un código distinto de cero cierra la ventana de mi terminal
Me dijeron que tal vez he set -econfigurado algún script bash en algún lugar que mi terminal obtenga.
He comprobado .bash_profile/ .bashrc/ .profiley no parece que set -eesté allí.
¿Habría algún otro culpable obvio?
bash
shell-script
terminal
bashrc
Alexander Mills
fuente
fuente

set +e, ¿repara el problema? Si es así, lo que supongo, entonces debes seguir buscando esoset -e. Podría estar en las versiones globales de estos archivos en/etc, o en cualquier otra secuencia de comandos procedente de ellos. Mueva sus archivos de configuración, si el problema se soluciona, vuelva a agregar las líneas en fragmentos más pequeños para ver dónde se rompe.PS4=' ${BASH_SOURCE}:$LINENO: ' bash -lixc true |& grep -e set -e trapPodría ser informativo.-, así:echo $-.Respuestas:
Muy bien, de hecho, fue un desvío lo
set -eque causó mi problema.La forma en que encontré el
set -eestaba usandobash -lxLo mejor sería usar:
bash -lx > lx.log 2>&1luego abra ese archivo de registro y busque
set...Una vez que encuentre ese camino
set -e, puede eliminar esa línea y su problema debería desaparecer. (El reinicio de la máquina puede ser una buena idea).En mi caso,
set -eestaba en un archivo que .bash_profile obtiene, pero la línea no estaba en .bash_profile.fuente
sourceen su shell son un conjunto mucho más pequeño que solo "scripts de shell aleatorios".-epuede ser útil en scripts reales, para la comprobación de errores tontos. (O para asegurarse de que no se olvidó de verificar errores.)global set -epara queset -esolo afecte el guión que lo contiene$-para verificar la bandera en la secuencia de comandos interna y restaurar su estado al final, o simplemente restablecerla en la secuencia de comandos principal si sabe que obtuvo secuencias de comandos que la estableceríanlocal set -eque solo podría usarse en una función bash?Si solo quiere resolver el problema, inclúyalo
set +een su.bashrc- al final.Puedes ir a cavar, hay muchos otros lugares donde
set -epodría estar, pero eso se encargará del lote.Sin embargo, si
set -ees parte de su,$PROMPT_COMMANDentonces lo anterior no funcionará. Intentaprintf '%s\n' "$PROMPT_COMMAND"ver qué contiene.fuente
printf '%s\n' "$PROMPT_COMMAND"solo produce espacios en blanco, nada allí$PROMPT_COMMANDes actualizar el nombre de la pestaña del terminal o el nombre de la ventana; MacOS X y Ubuntu hacen esto. Consulte apple.stackexchange.com/q/220641/151730 para obtener información sobre esto para Mac.set +eno funcionó, tal vez porque fue antes de laset -ellamada en mis archivos bash de origen.set +ea usted.bashrc, no ponerlo al principio. Lo he hecho explícito en mi respuesta ahora. ¡Qué bueno que hayas encontrado la fuente!set +eobviamente es solo una tirita, pero tú dijiste eso