2016-12-14 1 views
1

Je dispose d'un fichier set_env.sh, que je lance dans le terminal en utilisant:fichier SH ne pas fixer les variables ENV (Mac OS X)

sh set_env.sh

Le code est exécuté, mais les variables ne sont pas définies. Je vérifie avec

echo $ EMAIL_SERVER

set_env.sh

#!/bin/sh 

echo email Address 
read y 

echo email password? 
read x 

export EMAIL_SERVER='smtp.gmail.com' 
export EMAIL_PORT=587 
export EMAIL_DOMAIN='domain.com' 
export EMAIL_AUTHENTICATION='plain' 
export EMAIL_ENABLE_STARTTLS_AUTO=true 
export EMAIL_USERNAME=$y 
export EMAIL_PASSWORD=$x 
+1

'set_env.sh' source? –

+0

Cela l'a résolu. Quelle est la différence entre sh et source? – user2012677

+0

'sh set_env.sh' exécute le script dans un contexte shell séparé, dans un processus séparé, tandis que' source' exécute le script dans le contexte _current_ shell. J'ai posté une réponse. –

Répondre

1

Utilisez la commande source place:

source set_env.sh 

La commande exécute le script dans le courant contexte de shell par opposition à l'invocation via un processus shell séparé: sh set_env.sh (les variables d'environnement sont définies dans le nouveau processus sh qui est isolé du processus en cours).


Par ailleurs, vous pouvez utiliser un point (.) au lieu de source, si vous préférez.

0

Vous pouvez modifier votre fichier ~/.bash_profile dans votre répertoire personnel avec ce

export EMAIL_SERVER='smtp.gmail.com' 
export EMAIL_PORT=587 
export EMAIL_DOMAIN='domain.com' 
export EMAIL_AUTHENTICATION='plain' 
export EMAIL_ENABLE_STARTTLS_AUTO=true 
export EMAIL_USERNAME=$y 
export EMAIL_PASSWORD=$x