2010-11-04 7 views

Répondre

1

Vous devez rechercher votre script au lieu de l'exécuter.

. script.sh 

ou

source script.sh 

A l'intérieur du script, il suffit de l'exportation soit od juste définir la variable. Lorsque le script est exécuté, il s'exécute dans un processus de shell distinct et ne peut pas facilement modifier les variables du shell parent.

Pour en savoir plus ici: Can a shell script set environment variables of the calling shell?

8

Il y a deux façons que je connais pour ce faire. La première consiste à exécuter le script dans le contexte de l'enveloppe actuelle soit de:

. myscript.sh 
source myscript.sh 

mais qui court le risque de pollution de l'enveloppe actuelle avec toutes sortes de choses.

Je préférerais une solution où la quantité de fuite d'information est minime. Cela signifie encore en cours d'exécution comme un sous-shell, mais la sortie de la nouvelle voie sur la sortie statndard:

PATH=$(myscript.sh) 

Cette méthode est un bien meilleur puisque le chemin est le que chose qui peut être affectée par la sous-shell, mais vous avez faire attention à ce que produit ce sous-shell.

+0

Une troisième voie évidente est "eval", bien que ce soit aussi dangereux que l'approvisionnement. Par exemple, l'utilitaire de jeu de terminaux commun "tset" génère des commandes destinées à l'interpréteur de commandes à évaluer. –