Acabei de editar o arquivo .zshrc para configurar o Z shell no FreeBSD, por exemplo para atualizar a variável de sistema PATH .
path+=/usr/local/openjdk12/bin
Como faço para que as alterações entrem em vigor?
Devo sair e entrar novamente? Existe uma maneira de executar imediatamente esse arquivo?
Reiniciar zsh
Zsh lê
.zshrc
quando é iniciado. Você não precisa fazer logout e login novamente. Basta fechar o terminal e abrir um novo para você entrar.zshrc
neste novo terminal. Mas você pode tornar isso mais direto. Apenas diga ao zsh para se reiniciar:Se você executar isso em um prompt zsh, isso substituirá a instância atual de zsh por uma nova, executando no mesmo terminal. A nova instância tem as mesmas variáveis de ambiente que a anterior, mas tem novas variáveis de shell (não exportadas) e inicia um novo histórico (portanto, misturará comandos de outros terminais em configurações típicas). Quaisquer trabalhos em segundo plano são rejeitados.
Reler
.zshrc
Você também pode dizer ao zsh para reler
.zshrc
. Isso tem a vantagem de preservar o histórico do shell, as variáveis do shell e o conhecimento dos trabalhos em segundo plano. Mas dependendo do que você colocar no seu.zshrc
, isso pode ou não funcionar. A releitura.zshrc
executa comandos que podem não funcionar, ou não funcionar bem, se você os executar duas vezes.Há muitas coisas que você pode fazer para enumerar tudo o que está certo e não está certo para colocar
.zshrc
se quiser executá-lo duas vezes. Aqui estão apenas alguns problemas comuns:fpath+=(~/.config/zsh)
ouchpwd_functions+=(my_chpwd)
), isso anexará os mesmos elementos novamente, o que pode ou não ser um problema.foo ()
expandirá o alias:As alterações nos arquivos de inicialização de shells estarão ativas no próximo shell que você iniciar, por exemplo, se você abrir um novo terminal gráfico ou efetuar logout e login novamente. Se você fez alterações que devem afetar seu ambiente de desktop de alguma forma (não sei que tipo de alteração pode ser), será necessário sair e entrar novamente.
Você pode fornecer o arquivo com
. /path/to/filename
(. ~/.zshrc
no seu caso) ou iniciar uma nova sessão de shell a partir da linha de comando comzsh
, mas isso quase nunca é uma boa ideia, pois pode ter consequências indesejadas, como adicionar caminhos duplicados à$PATH
variável ou iniciarssh-agent
processos extras ou o que quer que você esteja fazendo nesse arquivo. As alterações também não seriam visíveis nos programas que já foram iniciados.Para uma mudança como apenas adicionar
$PATH
incondicionalmente, você pode obviamente executar o comando adicionado no shell atual:Isso (em
zsh
) adicionaria o/usr/local/openjdk12/bin
diretório ao final de$PATH
(e ao final do$path
array emzsh
) na sessão atual do shell. Novamente, essa alteração para$PATH
não afetaria os processos já em execução.Você pode obter o novo arquivo, o que funcionaria para algumas alterações, possivelmente incluindo a atualização da variável PATH (dependendo de outras linhas). No entanto, sua origem simplesmente seria executada
.zshrc
novamente e você poderia executar comandos duplicados inesperados. Além disso, se houvesse linhas excluídas do antigo.zshrc
, elas não seriam "apagadas" da sessão.A maneira mais limpa é apenas fazer logout e login novamente. Você só precisaria fazer isso para a sessão do terminal, não para todo o ambiente da área de trabalho.