Eu tenho um script de shell que muda de diretório e depois é executado. Quero que a alteração do diretório seja exibida no prompt de comando assim que o script terminar.
Então, eu executo com:
. script
No entanto, agora, quando o script termina, toda a janela termina. Existe uma maneira de corrigir isso?
Minha concha é bash.
Responder1
Existem duas maneiras de remediar isso no Mac
A> Vá para Preferências de Terminal, selecione [Geral] e desmarque a caixa que diz "Fechar janela se o shell sair corretamente".
B> Aponte seu editor de texto favorito para ~/Library/Preferences/com.apple.Terminal.plist
Encontre as linhas:
<key>ShellExitAction</key> <inteiro>1< /inteiro>
mude 1 para 2 e reinicie o aplicativo de terminal.
B é basicamente igual a A, mas feito manualmente.
Responder2
Contém script
uma exit
declaração? Lembre-se de que dot (sourcing) executa seu código no shell atual. Então, se tiver um exit
, seu shell atual será encerrado. Você pode querer verificar o script e alterá-lo exit
para return
.
Você pode detectar a origem (onde você deseja fazer return
) e a execução (onde você deseja exit
)
[[ $BASH_SOURCE != $0 ]] && echo 'running sourced ...'