Configure um arquivo init que irá fornecer o arquivo init do usuário no começo, e então faça o que você quiser:
$ cat env.sh
. ~/.bashrc
export SOMEVAR="value"
somespecialfunction() {
printf '%s\n' "I'm so cool"
}
$ bash --init-file env.sh
Estou escrevendo uma função bash que executará alguns comandos para configurar o ambiente e, em seguida, 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, em seguida, deixe um prompt bash aberto.
No entanto, quero criar um arquivo e configurar alguns aliases, funções e variáveis de ambiente e deixar o prompt aberto, algo assim:
bash -c 'source env.sh ; exec bash'
Naturalmente, isso não funciona porque os subshells não herdarão aliases ou funções. Existe uma maneira de contornar este problema? Prefiro ainda ter o .bashrc
do usuário como origem e não usar a opção --init-file
.
Configure um arquivo init que irá fornecer o arquivo init do usuário no começo, e então faça o que você quiser:
$ cat env.sh
. ~/.bashrc
export SOMEVAR="value"
somespecialfunction() {
printf '%s\n' "I'm so cool"
}
$ bash --init-file env.sh
Tags bash