Se eu fizer alterações .bashrc, como recarregá-lo sem sair e entrar novamente?
Se eu fizer alterações .bashrc, como recarregá-lo sem sair e entrar novamente?
Respostas:
Você apenas precisa digitar o comando:
source ~/.bashrc
ou você pode usar a versão mais curta do comando:
. ~/.bashrc
alias editbashrc='vim ~/.bashrc; source ~/.bashrc'. Isso tornará a edição muito mais suave, pois você não precisará pensar em recarregar, depois de fazer a edição, se estiver usando o alias personalizado.
Ou você pode usar:
exec bash
Isso faz a mesma coisa e é mais fácil de lembrar (pelo menos para mim).
O execcomando substitui completamente o processo do shell executando a linha de comando especificada. Em nosso exemplo, ele substitui qualquer que seja o shell atual por uma nova instância de bash(com os arquivos de configuração atualizados).
source .bashrccomando e exec bash?
sourceé um comando interno do shell que executa o conteúdo do arquivo passado como argumento, no shell atual . Portanto, no seu exemplo, ele executa o arquivo .bashrc no shell atual. E execcomando substitui o shell com um determinado programa, no seu exemplo, ele substitui o shell com bash (com os arquivos de configuração atualizados)
. ~/.bashrcserá executado em dashvez de bash, para que haja um erro porque shoptestá faltando. sourcenão é encontrado no shell, então essa solução também está disponível. Eu tentei isso e a imagem do docker foi criada sem problemas!
source ~/.bashrcpreservará todo o ambiente do shell (embora provavelmente modificado pela fonte de ~/.bashrc), enquanto exec bashpreservará apenas as variáveis de ambiente atuais do shell (quaisquer alterações ad-hoc no shell atual em termos de variáveis, função e opções do shell são perdidas). Dependendo das suas necessidades, uma ou outra abordagem pode ser preferida.
exec bash. O execcomando substitui o shell pelo programa, no nosso caso, bash. Portanto, sempre existe uma instância de bash no terminal.
Para complementar e contrastar as duas respostas mais populares . ~/.bashrce exec bash:
As duas soluções são recarregadas com eficiência~/.bashrc , mas há diferenças:
. ~/.bashrcou source ~/.bashrcvai preservar o seu shell atual :
~/.bashrcpelo recarregamento no shell atual ( fornecimento ), o shell atual e seu estado são preservados , o que inclui variáveis de ambiente, variáveis de shell, opções de shell, funções de shell e histórico de comandos.exec bash, ou, de maneira mais robusta, exec "$BASH"[1] , substituirá seu shell atual por uma nova instância e, portanto, preservará apenas as variáveis de ambiente do seu shell atual (incluindo aquelas que você definiu ad-hoc).
Dependendo das suas necessidades, uma ou outra abordagem pode ser preferida.
[1] exec bashpoderia, em teoria, executar um executável diferente bash daquele que iniciou o shell atual, se ele existir em um diretório listado anteriormente no $PATH. Como a variável especial $BASHsempre contém o caminho completo do executável que iniciou o shell atual, exec "$BASH"é garantido o uso do mesmo executável.
Uma nota de re "..."torno $BASH: dupla garante-citando que o valor da variável é utilizada tal como está, sem interpretação por Bash; se o valor não tiver espaços incorporados ou outros metacaracteres do shell (o que provavelmente não é o caso), você não precisará estritamente de aspas duplas, mas usá-las é um bom hábito.
exec $BASHserá fonte ~/.bashrc, então você verá suas alterações no ambiente do shell na nova sessão.
Alguém editou minha resposta para adicionar um inglês incorreto, mas aqui estava o original, que é inferior à resposta aceita.
. .bashrc
~/, mas desde que as principais respostas mostra tanto source ~/.bashrce . ~/.bashrcgostaria de saber se esta resposta deve apenas ser eliminada por ser redundante.
Dependendo do seu ambiente, basta digitar
bash
também pode funcionar.
. ~/.bashrc
source ~/.bashrc
exec bash
execcomando substitui o shell por um determinado programa ... - WhoSayIn
exec bashainda herda o ambiente do shell atual. exec env -i bashestaria mais perto (ou exec env -i bash -lse você estiver atualmente em um shell de login).
Dependendo do seu ambiente, convém adicionar scripts para que o .bashrc seja carregado automaticamente quando você abrir uma sessão SSH. Recentemente, fiz uma migração para um servidor executando o Ubuntu e lá, .profile, não .bashrc ou .bash_profile é carregado por padrão. Para executar qualquer script no .bashrc, eu precisava executar source ~/.bashrctoda vez que uma sessão era aberta, o que não ajuda na execução de implantações remotas.
Para que o seu .bashrc seja carregado automaticamente ao abrir uma sessão, tente adicioná-lo ao .profile:
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Reabra a sua sessão e ela deverá carregar os caminhos / scripts existentes no .bashrc.
Usei o easyengine para configurar meu servidor baseado em nuvem vultr.
Encontrei meu arquivo bash em /etc/bash.bashrc.
O mesmo source /etc/bash.bashrcfez o truque para mim!
atualizar
Ao configurar um servidor bare (ubuntu 16.04), você pode usar as informações acima, quando ainda não configurou um nome de usuário e está fazendo login via root.
É melhor criar um usuário (com privilégios sudo) e fazer login como esse nome de usuário.
Isso criará um diretório para suas configurações, incluindo arquivos .profile e .bashrc.
https://linuxize.com/post/how-to-create-a-sudo-user-on-ubuntu/
Agora, você irá editar e (e "fonte") o ~/.bashrcarquivo.
No meu servidor, ele estava localizado em /home/your_username/.bashrc
(onde your_usernameé, na verdade, o novo nome de usuário que você criou acima e agora efetue login)
exec bash é uma ótima maneira de reexecutar e lançar um novo shell para substituir o atual. apenas para adicionar à resposta, $ SHELL retorna o shell atual que é bash. Usando o seguinte, ele recarregará o shell atual e não apenas o bash.
exec $SHELL -l;
Para mim, o que funciona quando altero o PATH é: exec "$BASH" --login
~/.bashrc, que --loginserá não (directamente) de recarga; no nível do usuário, ele será recarregado ~/.bash_profile(ou ~/.bash_loginou ~/.profile).
tipo:
source ~/.bashrc
ou, em formato mais curto:
. ~/.bashrc
.bashrcestá localizado. Uma maneira mais correta de fazer isso, como dito na resposta aceita, é source ~/.bashrc.
eu uso o seguinte comando no msysgit
. ~/.bashrc
versão mais curta de
source ~/.bashrc
Assumindo um shell interativo, e você gostaria de manter seu histórico de comandos atual e também carregar / etc / profile (que carrega dados do ambiente, incluindo / etc / bashrc e no Mac OS X, carrega os caminhos definidos em /etc/paths.d/ path_helper), anexe seu histórico de comandos e execute um exec do bash com a opção de login ('-l'):
history -a && exec bash -l
Notei que o exec bashcomando puro preservará as variáveis de ambiente, portanto, você precisa usar exec -c bashpara executar o bash em um ambiente vazio.
Por exemplo, você efetua login em um bash e export A=1, se você exec bash, em A == 1.
Se você exec -cl bash, Aestá vazio.
Eu acho que essa é a melhor maneira de fazer seu trabalho.
eu pessoalmente tenho
alias ..='source ~/.bashrc'
no meu bashrc, para que eu possa usar ".." para recarregá-lo.
..como um apelido para cd .., então será muito confuso.
alias rehash='source ~/.bashrc'é a minha escolha.
export PATH=$PATH:fooe altere-a paraexport PATH=$PATH:bar. Se você efetuar login e sair, apenasbarestará no PATH, mas se você fizer o que sugere, ambosfooebarestará no PATH. Você conhece uma maneira de contornar isso?