Como recarregar .bash_profile na linha de comando?


997

Como recarregar a .bash_profilepartir da linha de comando ?

Posso fazer com que o shell reconheça as alterações .bash_profilesaindo e efetuando login novamente, mas gostaria de poder fazer isso sob demanda.

Respostas:


1883

Basta digitar source ~/.bash_profile

Como alternativa, se você gosta de salvar as teclas digitadas, pode digitar . ~/.bash_profile


49
Que tal alias BASHRELOAD=". ~/.bash_profile". Se você fizer isso com frequência, poderá simplesmente usar o alias como br.
precisa saber é o seguinte

1
alguma razão pela qual eu precisaria fazer isso toda vez / sessão? Não consigo fazer com que as alterações feitas no .bash_profile persistam, mesmo que estejam no arquivo quando o abro em um editor. Confuso.
Erwinheiser 13/09/14

3
@erwinheiser O seu sistema está carregando o arquivo? Alguns sistemas usam outros arquivos, como ~ / .bashrc.
Graham P Heath

1
Se você quiser saber se algo deu errado na carga, você pode usar:alias reload='source ~/.bash_profile && echo "File .bash_profile reloaded correctly" || echo "Syntax error, could not import the file"';
Cristian Batista

1
Para as pessoas que esqueceram que você mudou para o OhMyZsh. executar aberta ~ / .zshrc e fazer as mudanças lá em vez de seu .bash_profile
Sankofa

106
. ~/.bash_profile

Apenas verifique se você não tem nenhuma dependência do estado atual lá.


15
Por que isso funciona? Ou seja, qual é o .comando neste caso?
Jonah

9
o operador de ponto:. é simplesmente um apelido para o sourcecomando.
Graham P Heath

8
@ GrahamPHeath - a rigor, acho que é o contrário; o .é mais antigo do que sourceé.
31130 Carl Norum

4
sourceé uma implementação específica do bash de.
Thirupathi Thangavel 30/11/2015

7
@StasS - .e sourcesão literalmente a mesma coisa no bash. No link: " sourceé sinônimo de ponto / período ' .' no bash, mas não no POSIX sh, portanto, para obter compatibilidade máxima, use o período."
Carl Carlum

31

Basta digitar:

. ~/.bash_profile

No entanto, se você deseja que a fonte seja executada automaticamente quando o terminal iniciar, em vez de executá-lo toda vez que você abrir o terminal, poderá adicionar . ~/.bash_profileao ~/.bashrcarquivo.

Nota:

Quando você abre um terminal, o terminal inicia o bash no modo interativo (sem login), o que significa que ele será originado ~/.bashrc.

~/.bash_profileé originado apenas pelo bash quando iniciado no modo de login interativo . Normalmente, isso é apenas quando você faz login no console ( Ctrl+ Alt+ F1.. F6) ou se conecta via ssh.


15

Você também pode usar este comando para recarregar o ~ / .bash_profile para esse usuário. Certifique-se de usar o traço.

su - username

6
Isso invocará um shell inteiro dentro de um shell, longe do ideal. As outras opções simplesmente reexecutam o arquivo relevante, o que significa que (A) é realmente relevante para a pergunta feita e (B) não acumulam conchas e, possivelmente, recarregam outras coisas que não deveriam ser (envários, etc.). Não são formas adequadas para substituir o shell atual firme (sem nidificação), mas já que é off-topic, eu vou deixar os leitores interessados a procurar em outro lugar.
underscore_d

3
você está abrindo uma outra shell, esta não é uma recarga assim como você pode abrir um novo terminal ou re log
Juan Diego


11
  1. Salvar arquivo .bash_profile
  2. Ir para o diretório inicial do usuário digitando cd
  3. Recarregue o perfil com . .bash_profile

8
Basta ir para casa com cd. Não há necessidade ~.
roNn23

8
Não é necessário cd- você pode simplesmente recarregá-lo no diretório em que está:. ~/.bash_profile
Alex Villa

10

Se você não se importa de perder o histórico do seu terminal shell atual, também pode fazer

bash -l

Isso danificaria seu shell e abriria outro processo filho do bash. O -lparâmetro diz ao bash para ser executado como um shell de logon, isso é necessário porque .bash_profile não será executado como um shell que não é de logon, para obter mais informações sobre isso, leia aqui

Se você deseja substituir completamente o shell atual, também pode:

exec bash -l

O exemplo acima não bifurca seu shell atual, mas o substitui completamente; portanto, quando você digita, exitele termina completamente, em vez de deixá-lo no shell anterior.


Você não vai perder o seu histórico se você estiver usando iterm2
Xitcod13

4

Adicione alias bashs="source ~/.bash_profile"ao seu arquivo bash. Então você pode ligar bashsda próxima vez


1
Apelido I que para reset- mais fácil de lembrar
jcollum

3

se o .bash_profile não existir, tente executar o seguinte comando:

. ~/.bashrc 

ou

 source ~/.bashrc

em vez de .bash_profile. Você pode encontrar mais informações sobre bashrc


3

Gostaria de postar uma resposta rápida que, enquanto estiver usando source ~/.bash_profileou as respostas mencionadas acima, funcione, uma coisa a mencionar é que isso só recarrega seu perfil bash na guia ou sessão atual que você está visualizando. Se você deseja recarregar seu perfil bash em todas as guias / shell, precisará inserir este comando manualmente em cada uma delas.

Se você usa o iTerm, pode usar CMD⌘+ Shift+ Ipara inserir um comando em todas as guias atuais . Para terminal, pode ser útil fazer referência a esse problema ;



2

Eu uso o Debian e posso simplesmente digitar exec bashpara conseguir isso. Não sei dizer se funcionará em todas as outras distribuições.


2
Isso não vai funcionar no Mac (pelo menos não na versão que estou usando - Sierra) porque simplesmente fazendo que executa um shell nenhum login que não execute o .bash_profile
Ulukai

Aparentemente, o @Ulukai digitando apenas . .bash_profiledentro do diretório inicial do Mac fará o trabalho. O mesmo que a resposta dada acima por 7urkm3n.
Cassandra

2
alias reload!=". ~/.bash_profile"

ou se você quiser adicionar logs através de funções

function reload! () {
    echo "Reloading bash profile...!"
    source ~/.bash_profile
    echo "Reloaded!!!"
}

Não, é a sua preferência. Se quiser adicionar algumas linhas de impressão extras que mostram o status nem basta ir simplesmente . ~/. bash_profile nemsource ~/.bash_profile
7urkm3n

1

Estou executando o Sierra e trabalhei nisso por um tempo (tentando todas as soluções recomendadas). Fiquei confuso e, por fim, tentei reiniciar meu computador! Funcionou

minha conclusão é que, às vezes, é necessário um hard reset


1
Mike: Sim, uma redefinição definitiva funcionará porque tudo será carregado de novo. Contanto que as alterações feitas sejam funcionais, elas entrarão em vigor na próxima inicialização. No entanto, seria mais fácil para você procurar um pouco o comando / método para apenas atualizar o bash sem ter que fazer isso o tempo todo. Haverá uma maneira de alcançá-lo sem a reinicialização, o que obviamente consumirá muito tempo apenas para ver se as alterações mais recentes funcionam! Talvez dê uma olhada em osxdaily.com/2016/06/07/…
Cassandra

1
Sim, tentei o comando abreviado e completo para recarregar o perfil / caminho do bash. não funcionou, apenas desconectando e retornando funcionou. estranho
Bjorks número um fã
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.