source filename.sh
(ou . filename.sh
) executa o conteúdo de filename.sh
no intérprete atual (essencialmente, como se você copiasse o conteúdo naquele ponto). Consequentemente, exit
sairá desse intérprete.
Se você quiser apenas executar o script como um programa separado, não use source
: apenas ~/myscript.sh
executará se você torná-lo executável primeiro com chmod +x ~/myscript.sh
, ou você pode usar bash ~/myscript.sh
se você prefere. Isso inicia um novo shell para executar seu script, como se fosse qualquer outro programa no sistema.
Por outro lado, se você realmente quer dizer source
do seu script (porque ele vai definir variáveis de ambiente, digamos), você pode parar de executar o resto do arquivo sem afetar .bashrc
e o shell que executou usando return
:
return
may also be used to terminate execution of a script being executed with the.
(source
) builtin, returning eithern
or the exit status of the last command executed within the script as the exit status of the script
Nesse caso, seu arquivo myscript.sh
teria:
if [[ condition ]]
then
return 0
fi
com o efeito que você queria.