Eu tenho um script de brinquedo que imprime $SHLVL
e as configurações de invocação do shell:
$ cat tst.sh
echo "Level: $SHLVL"
echo "Options: $-"
Se eu source
estiver no shell atual, ele funcionará como esperado:
$ source tst.sh
Level: 1
Options: himBHs
Se estiver sourced
no sub-shell, novamente nada muito emocionante:
$ /bin/bash
$ source tst.sh
Level: 2
Options: himBHs
Executá-lo com a -c
configuração me deu uma saída ligeiramente diferente:
$ /bin/bash -c 'source tst.sh'
Level: 2
Options: hBc
Portanto, forneci as opções ausentes:
$ /bin/bash -sic 'source tst.sh'
Level: 2
Options: himBHcs
Observe que toda vez que tenho sourced
meu script usando a -c
configuração, após a conclusão do último comando no script, o sub-shell saiu. Isso é algo que eu gostaria de evitar, portanto, após o último comando no script, devo permanecer no interactive
sub-shell.
Basicamente, gostaria de replicar a seguinte sequência de etapas, mas usando -c
:
$ /bin/bash
$ source tst.sh