
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 ls
no bash.
Eu também posso fazer
bash -c 'ls ; exec bash'
Para executar ls
e 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 .bashrc
fosse originado e não usasse a --init-file
opçã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