¿Cómo ejecutar comandos bash y dejar el mensaje abierto?

¿Cómo ejecutar comandos bash y dejar el mensaje abierto?

Estoy escribiendo una función bash que ejecutará algunos comandos para configurar el entorno y luego dejará al usuario en el indicador.

puedo correr

bash -c 'ls'

Para ejecutar lsen bash.

yo también puedo hacer

bash -c 'ls ; exec bash'

Para ejecutar lsy luego dejar abierto un indicador de bash.

Sin embargo, quiero obtener un archivo y configurar algunos alias, funciones y variables de entorno y luego dejar el mensaje abierto, algo como esto:

 bash -c 'source env.sh ; exec bash'

Por supuesto, esto no funciona porque las subcapas no heredarán alias ni funciones. ¿Hay alguna forma de solucionar este problema? Preferiría seguir obteniendo el .bashrcorigen del usuario y no utilizar la --init-fileopción.

Respuesta1

Configure un archivo de inicio que generará el archivo de inicio del usuario al principio y luego haga lo que quiera:

$ cat env.sh
. ~/.bashrc
export SOMEVAR="value"
somespecialfunction() {
  printf '%s\n' "I'm so cool"
}
$ bash --init-file env.sh

información relacionada