Tengo un script de shell que cambia de directorio y luego se ejecuta. Quiero que el cambio de directorio se muestre en el símbolo del sistema una vez que finalice el script.
Entonces lo ejecuto con:
. script
Sin embargo, ahora, cuando finaliza el script, finaliza toda la ventana. ¿Hay alguna manera de solucionar esto?
Mi caparazón es bash.
Respuesta1
Hay dos formas de solucionar esto en Mac
A> Vaya a sus Preferencias de Terminal, seleccione [General] y desmarque la casilla que dice "Cerrar ventana si el shell sale limpiamente".
B> Apunte su editor de texto favorito a ~/Library/Preferences/com.apple.Terminal.plist
Encuentra las filas:
< clave>ShellExitAction</clave> < entero>1</entero>
cambie el 1 a un 2 y reinicie la aplicación del terminal.
B es básicamente lo mismo que A, pero se hace manualmente.
Respuesta2
¿ script
Contiene una exit
declaración? Recuerde que dot (sourcing) ejecuta su código en el shell actual. Entonces, si tiene un exit
, su shell actual se cierra. Es posible que desees comprobar el script y cambiarlo exit
a return
.
Es posible que pueda detectar el origen (donde le gustaría return
) y la ejecución (donde le gustaría exit
)
[[ $BASH_SOURCE != $0 ]] && echo 'running sourced ...'