2010-06-17 5 views
12

J'ai quelques paramètres de proxy que je veux seulement occasionnellement allumer, donc je ne veux pas les mettre dans mon ~/.bash_profile. J'ai essayé de les mettre directement dans ~/bin/set_proxy_env.sh, en ajoutant ~/bin à mon PATH, et chmod +x en utilisant le script mais si le script s'exécute, les variables ne collent pas dans mon shell. Est-ce que quelqu'un sait comment les faire rester pour le reste de la session shell?Comment définir les variables d'environnement bash à partir d'un script?

Répondre

18

Utilisez l'une:

source <file> 

. <file> 
+0

que monsieur, c'est de l'argent dans la banque – tofutim

14

Dans le script utilisent

export varname=value

et Executer le script avec:

source set_proxy_env.sh.

Le mot clé export garantit que la variable est marquée pour l'inclusion automatique dans l'environnement des commandes exécutées ultérieurement. L'utilisation de source pour exécuter un script le lance avec le shell actuel au lieu de lancer un script temporaire pour le script.

+0

J'ai eu la 'export'; c'était la 'source' qui me manquait. –

4

Avez-vous essayé ceci:

. ~/bin/set_proxy_env.sh

exécution par lui-même ouvre un sous-shell séparé (je pense) et définit la variable y. Mais ensuite, la liaison est perdue après la sortie dans votre shell. Le point à l'avant lui dit de l'exécuter dans le même shell.

En outre, ne pas oublier de export les variables dont vous avez besoin comme ceci: export MYVAR=value

+0

Il n'est pas nécessaire d'exporter toutes les variables. Seuls ceux dont vous avez besoin doivent être visibles pour les processus enfants. –

+0

Ah oui, c'est ce que je voulais dire :) –

Questions connexes