Como reinicializar uma janela de terminal em vez de fechá-la e iniciar uma nova?

49

Quando faço algumas alterações no comportamento do shell / bash, como configurar um alias, existe um comando rápido para reinicializar a janela do terminal em vez de fechar e abrir uma nova janela?

NES
fonte

Respostas:

51

Se você quer dizer recarregar sua configuração .bashrc, então:

source ~/.bashrc

Para menos digitação, você pode substituir sourcepor um ponto:. ~/.bashrc

narkisr
fonte
2
Aqui está uma pergunta: como isso se comporta de maneira diferente source ~/.bashrc?
crasic
Não faz. Olhando para a página de manual do bash, você verá que os comandos estão listados como equivalentes.
Carsten Thiel
2
sourceé um específico para o bash. .é mais padrão. Ambos funcionam da mesma forma no bash.
Michael Terry
11
Isso apenas recarrega seu PATH e algumas variáveis ​​de ambiente. Não "redefine" nada. A resposta do @ NES é a correta.
Cerin
2
Isso não redefine nada, se você tiver atualizações para o seu PATH, agora terá suas atualizações antigas e novas.
Constantin
39

Alguma adição que encontrei na página de manual do comando reset / tset

tset reset terminal de inicialização

comando: reset

Tset inicializa os terminais. Tset primeiro determina o tipo de terminal que você está usando. Essa determinação é feita da seguinte maneira, usando o primeiro tipo de terminal encontrado.

uma vantagem parece ser que é independente do shell usado. também trabalha com peixe aqui.

Portanto, para reinicializar qualquer terminal, basta

$ tset

OU

$ reset
NES
fonte
Infelizmente isso também está errado. Ele não redefine as variáveis ​​de ambiente existentes.
isarandi 28/03
9

Uma opção adicional para exec bashisso é que, se você alterou seu .profile(ou .bash_profile), pode fazer

$ exec bash --login

Isso lerá seu perfil novamente. Não faria mal adicionar a -iopção também para dizer explicitamente ao bash que esse é um shell interativo, mas normalmente ele pode descobrir isso por si mesmo.

Tony Ledford
fonte
para mim ele funciona sem exec também
Armen Sanoyan
Infelizmente errado também. As variáveis ​​de ambiente já definidas ainda estão lá e não são redefinidas.
isarandi 28/03
6

Você precisa substituir o aplicativo / shell em execução por uma nova instância. Por exemplo, se você estiver usando bashcomo seu shell preferido, digite a seguinte linha na sua linha de comando ( $ é o espaço reservado para o início da sua linha de comando):

> $ exec bash

O aplicativo / shell em execução é substituído por uma nova instância do bashlike, começando do zero. Todas as suas modificações anteriores se foram.

Observação: não esqueça que o aplicativo do seu terminal pode ser reprogramado. Você precisa redefinir o aplicativo do terminal manualmente.

Raphael Bossek
fonte
2
O que você quer dizer com "reprogramado"?
Eliah Kagan
0

seu shell é um executável que você pode chamar. Então, se você estiver usando o bash, pode ligar bashe se estiver usando outra coisa como zsh, basta digitarzsh

Rick
fonte
0

Use exec sudo --login --user $USER.

Se você também quiser os comandos digitados anteriormente para disapper (redefinição completa do terminal), combiná-lo com resetareset; exec sudo --login --user $USER

Existem muitas respostas na web, mas a maioria não funciona. A maneira mais fácil de testar é definir export SOMEVAR=42e executar o comando supostamente redefinindo e fazer echo $SOMEVAR. Se tiver 42 anos, o ambiente não foi redefinido.

Também existe exec -c bash -lou exec env -i bash -l, mas eles estão quebrados, de alguma forma a variável $ HOME não é definida depois disso.

isarandi
fonte