Come ricaricare .bash_profile dalla riga di comando?


997

Come posso ricaricare .bash_profiledalla riga di comando ?

Posso fare in modo che la shell riconosca le modifiche .bash_profileuscendo e riconnettendo ma vorrei essere in grado di farlo su richiesta.

Risposte:


1883

Digita semplicemente source ~/.bash_profile

In alternativa, se ti piace salvare le sequenze di tasti puoi digitare . ~/.bash_profile


49
Che ne dici di alias BASHRELOAD=". ~/.bash_profile". Se lo fai spesso puoi semplicemente dirlo come br.
bobobobo,

1
qualche motivo per cui dovrei farlo ogni volta / sessione? Non riesco a far sì che le modifiche apportate a .bash_profile persistano anche se sono presenti nel file quando lo apro in un editor. Confondere.
erwinheiser,

3
@erwinheiser il tuo sistema sta caricando il file? Alcuni sistemi utilizzano altri file, come ~ / .bashrc.
Graham P Heath,

1
Se vuoi sapere se qualcosa è andato storto nel caricamento puoi usare:alias reload='source ~/.bash_profile && echo "File .bash_profile reloaded correctly" || echo "Syntax error, could not import the file"';
Cristian Batista

1
Per le persone che hanno dimenticato che sei passato a OhMyZsh. esegui open ~ / .zshrc e apporta le modifiche lì invece del tuo .bash_profile
Sankofa

106
. ~/.bash_profile

Assicurati solo di non avere dipendenze dallo stato corrente lì dentro.


15
Perché funziona? Cioè, qual è il .comando in questo caso?
Giona,

9
l'operatore punto:. è semplicemente un alias per il sourcecomando.
Graham P Heath,

8
@GrahamPHeath - a rigor di termini penso che sia il contrario; la .è più vecchio di sourceIS.
Carl Norum,

4
sourceè un'implementazione specifica bash di.
Thirupathi Thangavel del

7
@StasS - .e sourcesono letteralmente la stessa cosa in bash. Dal link: " sourceè sinonimo di punto / punto ." in bash, ma non in POSIX sh, quindi per la massima compatibilità utilizzare il punto ".
Carl Norum,

31

Digita semplicemente:

. ~/.bash_profile

Tuttavia, se si desidera eseguirne l'esecuzione automatica all'avvio del terminale anziché eseguirlo ogni volta che si apre il terminale, è possibile aggiungere . ~/.bash_profileal ~/.bashrcfile.

Nota:

Quando si apre un terminale, il terminale inizia bash in modalità interattiva (non di accesso), il che significa che verrà fornito ~/.bashrc.

~/.bash_profileviene fornito da bash solo quando avviato in modalità di accesso interattivo . Ciò avviene in genere solo quando si accede alla console ( Ctrl+ Alt+ F1.. F6) o ci si connette tramite ssh.


15

Puoi anche usare questo comando per ricaricare il ~ / .bash_profile per quell'utente. Assicurati di usare il trattino.

su - username

6
Questo invocherà un'intera shell all'interno di una shell, tutt'altro che ideale. Le altre opzioni semplicemente rieseguono il file pertinente, nel senso che sono (A) effettivamente rilevanti per la domanda posta e (B) non accumulano shell e possibilmente ricaricano altre cose che non dovrebbero essere (ad esempio, ecc.). Ci sono modi adeguati per sostituire la shell corrente a titolo definitivo (senza nidificazione), ma dato che è off-topic, lascio i lettori interessati a cercare altrove.
underscore_d

3
stai aprendo un'altra shell, questo non è un ricaricamento potresti anche aprire un nuovo terminale o registrare di nuovo
Juan Diego

15

Mi piace il fatto che dopo aver appena modificato il file, tutto ciò che devi fare è digitare:

. !$

Questo genera il file che hai appena modificato nella cronologia. Vedi Cos'è il bang bang in bash .


11
  1. Salva il file .bash_profile
  2. Vai alla home directory dell'utente digitando cd
  3. Ricarica il profilo con . .bash_profile

8
Vai a casa con cd. Non c'è bisogno di ~.
roNn23

8
Non è necessario cd: puoi semplicemente ricaricarlo dalla directory in cui ti trovi attualmente:. ~/.bash_profile
Alex Villa,

10

Se non ti dispiace perdere la cronologia del tuo terminale shell corrente, potresti farlo

bash -l

Ciò rovescerebbe la tua shell e aprirà un altro processo figlio di bash. Il -lparametro dice a bash di funzionare come shell di login, questo è necessario perché .bash_profile non verrà eseguito come shell di non login, per maggiori informazioni su questa lettura qui

Se vuoi sostituire completamente la shell corrente puoi anche fare:

exec bash -l

Quanto sopra non eseguirà il fork della shell corrente ma la sostituirà completamente, quindi quando si digita exitla terminerà completamente, invece di lasciarti alla shell precedente.


non perderai la tua storia se stai usando iterm2
Xitcod13

4

Aggiungi alias bashs="source ~/.bash_profile"al tuo file bash. Quindi puoi chiamare bashsdalla prossima volta


1
Alias ​​questo per reset- più facile da ricordare
jcollum il

3

se il file .bash_profile non esiste, puoi provare a eseguire il comando seguente:

. ~/.bashrc 

o

 source ~/.bashrc

invece di .bash_profile. Puoi trovare maggiori informazioni su bashrc


3

Volevo pubblicare una risposta rapida che durante l'utilizzo source ~/.bash_profileo le risposte sopra menzionate funzionano, una cosa da menzionare è che questo ricarica solo il tuo profilo bash nella scheda o sessione corrente che stai visualizzando. Se desideri ricaricare il tuo profilo bash su ogni scheda / shell, devi inserire questo comando manualmente in ognuno di essi.

Se usi iTerm, puoi usare CMD⌘+ Shift+ Iper inserire un comando in tutte le schede correnti . Per il terminale può essere utile fare riferimento a questo problema ;



2

Uso Debian e posso semplicemente digitare exec bashper raggiungere questo obiettivo. Non posso dire se funzionerà su tutte le altre distribuzioni.


2
Questo non funzionerà su Mac (almeno non nella versione che sto usando - Sierra) perché semplicemente eseguendo una shell senza accesso che non esegue il .bash_profile
Ulukai,

A quanto pare @Ulukai semplicemente digitando . .bash_profilementre sei nella tua home directory su Mac farà il lavoro. Stessa risposta fornita da 7urkm3n.
Cassandra,

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

o se vuoi aggiungere i log tramite le funzioni

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

No, è la preferenza per l'anno. Se vuoi aggiungere alcune righe di stampa in più che mostrano lo stato né semplicemente andare, . ~/. bash_profile source ~/.bash_profile
7urkm3n

1

Sto eseguendo Sierra e ci sto lavorando da un po '(provando tutte le soluzioni consigliate). Mi sono confuso, quindi alla fine ho provato a riavviare il mio computer! Ha funzionato

la mia conclusione è che a volte è necessario un hard reset


1
Mike sì, un hard reset funzionerà perché tutto verrà quindi caricato di nuovo. Fintanto che le modifiche apportate sono funzionali, avrà effetto al successivo avvio. Tuttavia, sarebbe più facile per te scavare un po 'per trovare il comando / metodo per aggiornare bash senza doverlo fare sempre. Ci sarà un modo per raggiungerlo senza il riavvio, che ovviamente assorbirà troppo tempo solo per vedere se l'ultima modifica funziona! Forse dai un'occhiata a osxdaily.com/2016/06/07/…
Cassandra

1
Sì, ho provato sia il comando abbreviato che quello completo per ricaricare profilo / percorso bash. non ha funzionato, solo il logout e il ritorno hanno funzionato. weird
Bjorks numero uno fan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.