Zefram respondeu a uma pergunta semelhante na lista de discussão zsh há mais de 20 anos :
A solução é usar uma função - vamos chamá-la source_bash
- para criar o script bash:
function source_bash {
emulate -L bash
builtin source "$@"
}
O truque é a opção localoptions
, que é descrita da seguinte forma na página man:
LOCAL_OPTIONS If this option is set at the point of return from a shell function, most options (including this one) which were in force upon entry to the function are restored; options that are not restored are PRIVILEGED and RESTRICTED. Otherwise, only this option, and the LOCAL_LOOPS, XTRACE and PRINT_EXIT_VALUE options are restored. Hence if this is explicitly unset by a shell function the other options in force at the point of return will remain so. A shell function can also guarantee itself a known shell configuration with a formulation like 'emulate -L zsh'; the -L activates LOCAL_OPTIONS.
Coloque esta função no seu ~/.zshrc
e você só precisará fazer um
$ source_bash setupscipt.bash
quando necessário.