Reinicie completamente o Bash

18

Existe uma maneira de reiniciar completamente o Bash, recarregar .bashrce assim por diante .profile? Gostaria de garantir que minhas alterações funcionassem corretamente após a edição desses arquivos.

Naftuli Kay
fonte

Respostas:

32

Faça com que ela se substitua por si mesma.

exec bash -l

Observe que isso não afetará coisas como as variáveis ​​exportadas ou cwd.

Ignacio Vazquez-Abrams
fonte
Bom, mas eu gosto especialmente de fazer isso, a fim de verificar e ver se o meu PATHestá sendo definido como eu quero ou a minha PS1, etc.
Naftuli Kay
11
Retire o exece você obtém um shell que origina os arquivos que você deseja. Então, exitquando você terminar de verificar.
Arcege 17/10/11
@TK: Quaisquer variáveis ​​que você atribuir terão precedência sobre as sobras do shell anterior.
Ignacio Vazquez-Abrams
Então, isso funcionará para alterar meu prompt do Bash? Ou seja, ele recarregará meu prompt do bash sempre que eu o executar?
Naftuli Kay
Contanto que você esteja configurando $PS1os arquivos de inicialização do bash, sim.
Ignacio Vazquez-Abrams
9

Sugiro com urgência que efetue login em uma janela / tela separada. Dessa forma, você ainda terá uma sessão de trabalho se algo der errado com suas alterações nos arquivos de inicialização. Além disso, você tem certeza de ter um ambiente limpo.

Razão: eu vi muitas pessoas se trancando em um sistema devido a um simples erro de digitação em seu .profile (ou algo assim).

ktf
fonte
+10, um shell limpo onde você pode alterar as edições é essencial.
Sardathrion - Restabelece Monica
Estou em um DE, então não deve ser tão ruim, Bauhaus sim, tenha cuidado.
Naftuli Kay 17/10/11
3

Se seu objetivo é simplesmente ler os arquivos modificados novamente, você não precisa reiniciá-lo. Você pode simplesmente obtê-lo.

source filename

ou

. filename # notice the dot

Observe que isso não fornecerá um "estado limpo" no sentido de não desabilitar nenhuma variável definida ou função definida ...

rahmu
fonte
2
su -l yourOwnUserName

Irá abrir um novo shell para o yourOwnUserNameusuário com todas as configurações recarregadas. Isso é independente do shell, pois se refere às configurações do sistema, não ao seu shell específico. Ele também carrega algumas configurações em todo o sistema que bash -lnão são (como grupos de usuários).

rozcietrzewiacz
fonte
nota importante: "um shell novo" aqui significa um shell dentro do shell existente, portanto, você está apenas aninhando conchas, não substituindo a original. A resposta aceita faz isso corretamente.
underscore_d