Se você iniciar um script com uma instrução exit , será necessário iniciá-lo como filho de seu filho atual.
Se você iniciá-lo dentro do shell atual de iniciado com sua sessão de terminal (usando . ./<scriptname> any exit fechará o shell principal, aquele iniciado ao longo de sua sessão de terminal.
Se você tivesse lançado seu script como bash ./<scriptname> (ou qualquer outro shell em vez de bash ), então exit teria parado seu shell filho e não o usado pelo seu terminal. / p>
Se o seu script tiver permissões executáveis, executá-lo diretamente sem fornecer o nome do shell também o executará em um shell filho.
Usar return em vez de exit permitirá que você ainda lance seu script usando . ./<script name> sem fechar o shell atual. Mas você precisa usar return para sair de uma função apenas ou de um script de origem (o script foi executado usando a sintaxe . ./<scriptname> ).