Quelques problèmes surviennent lors de la tentative de rechargement du fichier / source ~ / .profile. [Cela fait référence à Ubuntu Linux - dans certains cas, les détails des commandes seront différents]
- Exécutez-vous ceci directement dans le terminal ou dans un script?
- Comment exécutez-vous cela dans un script?
Un d. 1)
L'exécuter directement dans le terminal signifie qu'aucun sous-shell ne sera créé. Vous pouvez donc utiliser deux commandes:
source ~/.bash_profile
ou
. ~/.bash_profile
Dans les deux cas, cela mettra à jour l'environnement avec le contenu du fichier .profile.
Annonce 2) Vous pouvez démarrer n'importe quel script bash soit en appelant
sh myscript.sh
ou
. myscript.sh
Dans le premier cas, cela créera un sous-shell qui n'affectera pas les variables d'environnement de votre système et elles ne seront visibles que par le processus du sous-shell. Une fois la commande de sous-shell terminée, aucune des exportations, etc. ne sera appliquée. CECI EST UNE ERREUR COMMUNE ET FAIT PERDRE BEAUCOUP DE DEVELOPPEURS BEAUCOUP DE TEMPS.
Pour que vos modifications appliquées dans votre script aient un effet sur l'environnement global, le script doit être exécuté avec
.myscript.sh
commander.
Afin de vous assurer que votre script n'est pas exécuté dans un sous-groupe, vous pouvez utiliser cette fonction. (Encore une fois, l'exemple est pour le shell Ubuntu)
#/bin/bash
preventSubshell(){
if [[ $_ != $0 ]]
then
echo "Script is being sourced"
else
echo "Script is a subshell - please run the script by invoking . script.sh command";
exit 1;
fi
}
J'espère que cela dissipe certains des malentendus courants! : D Bonne chance!