Je suis nouveau dans le scripting shell bash, et j'ai rencontré un défi. Je sais que je peux recharger mon fichier ".profile" en faisant simplement:
. .profile
mais j'essaie d'exécuter la même chose dans un script bash que j'écris et cela ne fonctionne tout simplement pas. Des idées? Y a-t-il autre chose que je peux fournir pour clarifier?
Merci
bash
shell
unix
.bash-profile
Amir Rustamzadeh
la source
la source
Réponses:
Essayez ceci pour recharger votre shell actuel:
la source
source
commande exécutera le fichier en tant que script ... Dans le pire des cas, si quelqu'un utilisait une affectation de variable commeMyVar="$foo$MyVar"
dans son bash_profile, alorssource ~/.profile
donnerait le résultat finalMyVar="$foo$MyVar$MyVar"
, donc$MyVar
aurait la mauvaise valeur par la suite. (Indépendamment des mauvaises pratiques, il suffit de demander une solution alternative)Essaye ça:
la source
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]
Un d. 1)
L'exécuter directement dans le terminal signifie qu'aucun sous-shell ne sera créé. Vous pouvez donc utiliser deux commandes:
ou
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
ou
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
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)
J'espère que cela dissipe certains des malentendus courants! : D Bonne chance!
la source
Le script bash s'exécute dans un sous-shell distinct. Pour que cela fonctionne, vous devrez également vous procurer cet autre script.
la source
.profile
fichier quelque chose comme ceci:. $HOME/.profile
et vous devrez démarrer votre script en l'approvisionnant également. Quelque chose comme. /path/to/yourscript
Essayer:
la source