web-dev-qa-db-fra.com

Comment recharger .bashrc dans le shell en appelant un script

Comment forcer le shell à partir duquel j'ai appelé un script à recharger .bashrc à partir de l'intérieur du script?

J'essaie de créer un script "nouvelle boîte" qui configure tout comme je l'aime. Tout fonctionne, sauf pour recharger .bashrc.

Je sais que je peux "juste" faire . ~/.bashrc ou exec bash ou tout autre moyen d'appliquer les modifications après exécuter le script. Mais cela défait en quelque sorte le but de faire une solution à un bouton, et venir si loin pour se faire défoncer à la dernière étape me rend fou. Lol


J'ai essayé d'ajouter tous les éléments source ~./bashrcexec bash au script, mais pas de joie, car il ne fait que les recharger pour l'environnement du script et non pour le shell appelant.

Je suis encore assez jeune, alors c'est probablement quelque chose de très évident qui expliquerait pourquoi je ne pouvais pas répondre à Google>. <

toute aide serait très appréciée.

1
Wayne

Cela pourrait ne pas fonctionner pour tout. Et peut-être que je ne devrais pas être en train de faire quelque chose… mais pour ce faire, le travail est fait.

Pour script.sh si je l’appelle par . script.sh au lieu de bash script.sh tout semble fonctionner et se mettre à jour en conséquence.

Yay!

2
Wayne

Je sais que cela paraîtra ridicule. Je suis également nouveau ici, mais que se passe-t-il si vous exportez les environnements dont vous avez besoin directement à partir du script, puis que vous les ajoutez au .bashrc pour une utilisation ultérieure?

Supposons, par exemple, vérifier si une variable d'environnement existe et le charger:

### MySQL
if [ -z "$MYSQL_HOME" ]; then
    export MYSQL_HOME="/usr/local/mysql"
    export PATH="$MYSQL_HOME/bin:$PATH"
fi

puis copiez ce code de segment dans .bashrc également ...

MODIFIER

En fait, je suis tombé sur ça Mise à jour du fichier ~/.bashrc pour un script

0
kostia