Comment recharger .bash_profile depuis la ligne de commande?

997

Comment puis-je recharger à .bash_profilepartir de la ligne de commande ?

Je peux faire en sorte que le shell reconnaisse les modifications apportées .bash_profileen quittant et en me reconnectant, mais j'aimerais pouvoir le faire à la demande.

markdorison
la source

Réponses:

1883

Tapez simplement source ~/.bash_profile

Alternativement, si vous aimez enregistrer les frappes, vous pouvez taper . ~/.bash_profile

SiegeX
la source
49
Que diriez-vous alias BASHRELOAD=". ~/.bash_profile". Si vous faites cela souvent, vous pouvez simplement l'aliaser en tant que br.
bobobobo
1
une raison pour laquelle je devrais le faire à chaque fois / session? Je ne peux pas faire en sorte que les modifications apportées à .bash_profile persistent même si elles sont présentes dans le fichier lorsque je l'ouvre dans un éditeur. Déroutant.
erwinheiser
3
@erwinheiser votre système charge-t-il le fichier? Certains systèmes utilisent d'autres fichiers, tels que ~ / .bashrc.
Graham P Heath
1
Si vous voulez savoir si quelque chose s'est mal passé sur la charge, vous pouvez utiliser:alias reload='source ~/.bash_profile && echo "File .bash_profile reloaded correctly" || echo "Syntax error, could not import the file"';
Cristian Batista
1
Pour les personnes qui ont oublié que vous êtes passé à OhMyZsh. exécutez open ~ / .zshrc et apportez les modifications à la place de votre .bash_profile
Sankofa
106
. ~/.bash_profile

Assurez-vous simplement de ne pas avoir de dépendances sur l'état actuel.

Carl Norum
la source
15
Pourquoi ça marche? C'est à dire, quelle est la .commande dans ce cas?
Jonah
9
l'opérateur point:. est simplement un alias pour la sourcecommande.
Graham P Heath
8
@GrahamPHeath - à proprement parler, je pense que c'est l'inverse; l' .est plus ancienne que l' sourceest plus .
Carl Norum
4
sourceest une implémentation spécifique à bash de.
Thirupathi Thangavel
7
@StasS - .et sourcesont littéralement la même chose dans bash. Du lien: " sourceest un synonyme de point / point ." dans bash, mais pas dans POSIX sh, donc pour une compatibilité maximale, utilisez le point. "
Carl Norum
31

Tapez simplement:

. ~/.bash_profile

Cependant, si vous souhaitez le faire fonctionner automatiquement au démarrage du terminal au lieu de l'exécuter à chaque fois que vous ouvrez le terminal, vous pouvez l'ajouter . ~/.bash_profileau ~/.bashrcfichier.

Remarque:

Lorsque vous ouvrez un terminal, le terminal démarre bash en mode interactif (sans connexion), ce qui signifie qu'il se source ~/.bashrc.

~/.bash_profilen'est fourni par bash qu'au démarrage en mode de connexion interactif . C'est généralement uniquement lorsque vous vous connectez à la console ( Ctrl+ Alt+ F1.. F6) ou lorsque vous vous connectez via ssh.

Mohammad Anini
la source
15

Vous pouvez également utiliser cette commande pour recharger le ~ / .bash_profile pour cet utilisateur. Assurez-vous d'utiliser le tiret.

su - username
jaypal singh
la source
6
Cela invoquera un shell entier dans un shell, loin d'être idéal. Les autres options ré-exécutent simplement le fichier pertinent, ce qui signifie qu'elles sont (A) réellement pertinentes pour la question posée et (B) n'empilent pas les obus et ne rechargent peut-être pas d'autres choses qui ne devraient pas l'être (env vars, etc.). Il existe des moyens appropriés pour remplacer le shell actuel (sans imbrication), mais comme cela est hors sujet, je laisserai les lecteurs intéressés chercher ailleurs.
underscore_d
3
vous ouvrez un autre shell, ce n'est pas un rechargement, vous pourriez aussi bien ouvrir un nouveau terminal ou vous reconnecter
Juan Diego
15

J'aime le fait qu'après avoir édité le fichier, il vous suffit de taper:

. !$

Cela source le fichier que vous venez de modifier dans l'historique. Voir What is bang dollar in bash .

hyper_st8
la source
11
  1. Enregistrer le fichier .bash_profile
  2. Aller au répertoire personnel de l'utilisateur en tapant cd
  3. Recharger le profil avec . .bash_profile
Mithun Khatri
la source
8
Rentrez chez vous avec cd. Pas besoin de ~.
roNn23
8
Pas besoin de cd- vous pouvez simplement le recharger à partir du répertoire dans lequel vous vous trouvez actuellement:. ~/.bash_profile
Alex Villa
10

Si cela ne vous dérange pas de perdre l'historique de votre terminal shell actuel, vous pouvez également le faire

bash -l

Cela bifurquerait votre shell et ouvrirait un autre processus enfant de bash. Le -lparamètre indique à bash de s'exécuter en tant que shell de connexion, ceci est obligatoire car .bash_profile ne s'exécutera pas en tant que shell sans connexion, pour plus d'informations à ce sujet, lisez ici

Si vous souhaitez remplacer complètement le shell actuel, vous pouvez également faire:

exec bash -l

Ce qui précède ne bifurquera pas votre shell actuel mais le remplacera complètement, donc lorsque vous tapez, exitil se terminera complètement, plutôt que de vous déposer dans le shell précédent.

Ulukai
la source
vous ne perdrez pas votre historique si vous utilisez iterm2
Xitcod13
4

Ajoutez-le alias bashs="source ~/.bash_profile"à votre fichier bash. Vous pouvez donc appeler bashsde la prochaine fois

Shemeer M Ali
la source
1
Je alias cela pour reset- plus facile à retenir
jcollum
3

si le .bash_profile n'existe pas, vous pouvez essayer d'exécuter la commande suivante:

. ~/.bashrc 

ou

 source ~/.bashrc

au lieu de .bash_profile. Vous pouvez trouver plus d'informations sur bashrc

Ezequiel De Simone
la source
3

Je voulais poster une réponse rapide qui, tout en utilisant source ~/.bash_profileou les réponses mentionnées ci-dessus fonctionne, une chose à mentionner est que cela ne recharge que votre profil bash dans l'onglet ou la session actuelle que vous consultez. Si vous souhaitez recharger votre profil bash sur chaque onglet / shell, vous devez entrer cette commande manuellement dans chacun d'eux.

Si vous utilisez iTerm, vous pouvez utiliser CMD⌘+ Shift+ Ipour entrer une commande dans tous les onglets actuels . Pour le terminal, il peut être utile de référencer ce problème ;

août
la source
2

J'utilise Debian et je peux simplement taper exec bashpour y parvenir. Je ne peux pas dire si cela fonctionnera sur toutes les autres distributions.

Cassandra
la source
2
Cela ne fonctionnera pas sur Mac (du moins pas dans la version que j'utilise - Sierra) car simplement cela exécute un shell sans connexion qui n'exécute pas le .bash_profile
Ulukai
@Ulukai semble simplement taper . .bash_profiledans votre répertoire personnel sur Mac fera l'affaire. Identique à la réponse donnée ci-dessus par 7urkm3n.
Cassandra
2
alias reload!=". ~/.bash_profile"

ou si vous voulez ajouter des journaux via des fonctions

function reload! () {
    echo "Reloading bash profile...!"
    source ~/.bash_profile
    echo "Reloaded!!!"
}
7urkm3n
la source
Non, c'est votre préférence pour l'année. Si voulez ajouter des lignes d'impression supplémentaires montrant le statut , ni simplement aller simplement , . ~/. bash_profile nisource ~/.bash_profile
7urkm3n
1

J'exécute Sierra et y travaillais depuis un certain temps (essayant toutes les solutions recommandées). Je suis devenu confus alors j'ai finalement essayé de redémarrer mon ordinateur! Ça a marché

ma conclusion est que parfois une réinitialisation matérielle est nécessaire

Fan numéro un de Bjorks
la source
1
Mike oui, une réinitialisation matérielle fonctionnera, car tout est alors fraîchement chargé. Tant que les modifications que vous avez apportées sont fonctionnelles, elles prendront effet au prochain démarrage. Cependant, il serait plus facile pour vous de fouiller un peu pour trouver la commande / méthode pour simplement rafraîchir le bash sans avoir à le faire tout le temps. Il y aura un moyen d'y parvenir sans le redémarrage, ce qui bien sûr prendra beaucoup trop de temps juste pour voir si le dernier changement fonctionne! Consultez
Cassandra
1
ouais j'ai essayé la commande abrégée et complète pour recharger le profil / chemin bash. cela n'a pas fonctionné, seulement la déconnexion et la reconnexion ont fonctionné. bizarre
fan numéro un de Bjorks