Forum Programmation.shell Besoin d'un petit cours sur export dans un script bash

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
29
nov.
2024

Bonjour à tous,

mon script :

VAR1EXPORT=toto
export VAR1EXPORT
VAR2EXPORT=tata
export VAR2EXPORT

## Exec 1: ##
{promt}mon_script

## Exec 2: ##
{promt}. mon_script

## Qestion ##
Dans le premier cas, cela ne fonctionne pas (une fois le script terminé les variables ne sont pas exporté dans le shell)
Dans le deuxième car, ça fonctionne (les variables sont présente dans le shell)






Merci de m'expliquer ou me fournir un lien vers un doc pour comprendre.

En vous remerciant d'avance.
  • # linuxfr et les / dans le corps du texte

    Posté par  . Évalué à 2 (+0/-1).

    j'imagine que ton exec2 c'est en fait
    ./mon_script

    cela n'a en fait rien à voir avec l'export
    c'est le chemin de recherche (le PATH) de l'executable qui entre en jeu

    en faisant
    mon_script il va chercher mon_script dans le PATH, et pas forcement dans le dossier local
    ./mon_script il va chercher dans le dossier courant ./

  • # Commande source

    Posté par  . Évalué à 4 (+2/-0).

    Ça serait bien d’être plus précis, et surtout d'expliquer ce qui ne fonctionne pas.

    Mais avec le contexte on peut deviner. Je suppose que tu voudrais les variables VAR1EXPORT et VAR2EXPORT accessible dans ton shell après avoir lancé ton script.

    Dans le premier cas, ton script s’exécute dans un autre shell, indépendant de ton shell actuel. Donc les variables ne sont pas exportés dans ta session actuelle.

    La commande . est un alias de source en bash, qui exécute ton script dans ton shell courant. Si tu veux plus d'infos tu peux chercher source bash.

  • # Résolu

    Posté par  . Évalué à 2 (+1/-0).

    J'ai trouvé.
    . est un alias de source

    source est documenté.

    en gros source permet de ne pas créer un nouveau processus shell pour exécuté le script (donc exécuté dans le shell courant)

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.