Como executar comandos bash e deixar o prompt aberto?

1

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 .

    
por peskal 21.10.2016 / 04:30

1 resposta

1

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
    
por 21.10.2016 / 05:15

Tags