
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 ls
en bash.
yo también puedo hacer
bash -c 'ls ; exec bash'
Para ejecutar ls
y 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 .bashrc
origen del usuario y no utilizar la --init-file
opció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