Eu olhei em volta e procurei uma resposta para essa pergunta, mas não a acho (o que é estranho).
Minha pergunta é, existe alguma maneira simples de reiniciar a sessão bash de dentro do terminal no mac. Eu só quero o mesmo comportamento como se eu fechasse o aplicativo de terminal e o iniciasse novamente (todas as variáveis são redefinidas, .bash_profile de origem etc).
Eu sei como fonte .bash_profile, mas não é isso que eu quero. Uma das razões pelas quais desejo fazer isso é porque um plug-in para o meu prompt do bash possui um código que impede que as cores sejam carregadas várias vezes. Portanto, a fonte .bash_profile não recarrega as variáveis de cores e eu tenho que reiniciar o aplicativo de terminal para obter alterações.
exec bash
só reinicia esse shell interativo? Além disso, você pode explicar exatamente o que o comando exec faz e suas opções? Obrigado!man bash
, localize a última instância da sequência SHELL BUILTIN COMMANDS e role para baixo até exec. Em suma, passar a-c
bandeira o executará sem nenhuma variável de ambiente (o que pode ser necessário para seus propósitos, eu não sei), e os outros argumentos -l e -a provavelmente não são o que você deseja (eles parecem históricos / recursos obscuros e específicos). Você também pode usar exec para abrir novos descritores de arquivo no shell atual, se você deixar o comando.-l
Aqui está um argumento para bash e apenas faz com que ele se comporte como um shell de login. Abrir descritores de arquivo no shell atual não tem nada a ver com sua pergunta, mas você pode usar,exec 4<>test.txt
por exemplo, para fazer com que o descritor de arquivo 4 aponte para test.txt. Em seguida, no restante do seu shell, você pode fazerecho test>&4
a saída para test.txt.A resposta aceita é ótima para um shell que está usando o bash, que também é o que o OP pediu, no entanto, estou usando o Terminal no macOS com um shell não padrão (zsh) e executar o comando
exec bash
obviamente não tem o efeito desejado : inicia o bash em vez do meu shell padrão.Portanto, o comando independente de ambiente seria o
exec $SHELL
que utiliza a variável de ambiente$SHELL
que armazena o shell padrão para o usuário.Além disso, observe que a Apple substituirá o bash pelo zsh no macOS Catalina, para que o OP esteja procurando a execução
exec zsh
ouexec $SHELL
será o caminho a seguir após a atualização para o macOS 10.15.fonte