Como executar comandos bash e deixar o prompt aberto?

Como executar comandos bash e deixar o prompt aberto?

Estou escrevendo uma função bash que executará alguns comandos para configurar o ambiente e deixará o usuário no prompt.

eu posso correr

bash -c 'ls'

Para executar lsno bash.

Eu também posso fazer

bash -c 'ls ; exec bash'

Para executar lse deixe um prompt do bash aberto.

No entanto, quero criar um arquivo e configurar alguns aliases, funções e variáveis ​​de ambiente e, em seguida, deixar o prompt aberto, algo assim:

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

É claro que isso não funciona porque os subshells não herdarão aliases ou funções. Existe uma maneira de contornar este problema? Eu preferiria que o usuário ainda .bashrcfosse originado e não usasse a --init-fileopção.

Responder1

Configure um arquivo init que fornecerá o arquivo init do usuário no início e faça o que quiser:

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

informação relacionada