Miré a mi alrededor y busqué una respuesta a esta pregunta, pero parece que no la encuentro (lo cual es extraño).
Mi pregunta es, ¿hay alguna manera simple de reiniciar la sesión bash desde el terminal en mac? Solo quiero el mismo comportamiento que si cerrara la aplicación de terminal y la volviera a iniciar (restablecimiento de todas las variables, fuente de .bash_profile, etc.).
Sé cómo obtener .bash_profile, pero eso no es lo que quiero. Una de las razones por las que quiero hacer esto es porque un complemento para mi solicitud de bash tiene un código que evita que los colores se carguen varias veces. Por lo tanto, el abastecimiento de .bash_profile no vuelve a cargar las variables de color y tengo que reiniciar la aplicación del terminal para que los cambios surtan efecto.
exec bash
solo reinicia ese shell interactivo? Además, ¿puede explicar exactamente qué hace el comando exec y sus opciones? ¡Gracias!man bash
, encuentre la última instancia de la cadena SHELL BUILTIN COMMANDS y luego desplácese hacia abajo hasta exec. En resumen, pasar el-c
indicador lo ejecutará sin ninguna variable de entorno (lo que podría ser necesario para sus propósitos, no lo sé), y los otros argumentos -l y -a probablemente no sean las cosas que desea (parecen ser históricas). / características oscuras y específicas). También puede usar exec para abrir nuevos descriptores de archivo en el shell actual, si deja de lado el comando.-l
Aquí hay un argumento para bash y solo hace que se comporte como un shell de inicio de sesión. Abrir los descriptores de archivos en el shell actual no tiene nada que ver con su pregunta, pero puede usar,exec 4<>test.txt
por ejemplo, para hacer que el descriptor de archivos apunte a test.txt. Luego, en el resto de su shell, puede hacer laecho test>&4
salida a test.txt.La respuesta aceptada es excelente para un shell que usa bash, que también es lo que solicitó el OP, sin embargo, estoy usando Terminal en macOS con un shell no predeterminado (zsh) y ejecutar el comando
exec bash
obviamente no tiene el efecto deseado : lanza bash en lugar de mi shell predeterminado.Por lo tanto, el comando environment-agnostic sería el
exec $SHELL
que utiliza la variable de entorno$SHELL
que almacena el shell predeterminado para el usuario.Además, tenga en cuenta que Apple reemplazará bash con zsh en macOS Catalina para tener el efecto que el OP busca ejecutar
exec zsh
oexec $SHELL
será el camino a seguir después de actualizar a macOS 10.15.fuente