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.

markdorison
fonte

Respostas:

1883

Basta digitar source ~/.bash_profile

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

SiegeX
fonte
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á.

Carl Norum
fonte
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.

Mohammad Anini
fonte
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
jaypal singh
fonte
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
15

Gosto do fato de que depois de editar o arquivo, tudo o que você precisa fazer é digitar:

. !$

Isso origina o arquivo que você acabou de editar no histórico. Consulte O que é bang dollar na festança .

hyper_st8
fonte
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
Mithun Khatri
fonte
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.

Ulukai
fonte
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

Shemeer M Ali
fonte
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

Ezequiel De Simone
fonte
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 ;

agosto
fonte
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.

Cassandra
fonte
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!!!"
}
7urkm3n
fonte
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

Bjorks fã número um
fonte
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ã