2016-12-14 9 views
1

У меня есть файл set_env.sh, что я бегу в терминале с помощью:SH Файл не устанавливая ENV переменные (Mac OS X)

ш set_env.sh

код работает, но переменные не заданы. Я проверяю с

эхо $ 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'? –

+0

Это решило. В чем разница между sh и источником? – user2012677

+0

'sh set_env.sh' выполняет скрипт в отдельном контексте оболочки в отдельном процессе, а' source' выполняет скрипт в контексте оболочки _current_. Я отправил ответ. –

ответ

1

Используйте source команду вместо:

source set_env.sh 

Команда выполняет скрипт в тока контекст оболочки в отличие от вызова через отдельный процесс оболочки: sh set_env.sh (переменные окружения устанавливаются в новом процессе sh, который изолирован от текущего процесса).


Кстати, вы можете использовать точку (.) вместо source, если вы предпочитаете.

0

Вы можете изменить свой ~/.bash_profile файл в вашем домашнем каталоге с этим

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