我在本地部署METEOR应用程序,我的开发人员通过bash脚本部署它们。 应用程序依赖于作为环境variables加载的简单string,但有一个特殊的string包含整个JSON对象。
我正在寻找一种方法来在上下文中共享相同的环境variables,shell bash和通过SSH启动的脚本。
我创build了一个通用文件:
猫〜/ config.env
PATH=/home/team/.nvm/versions/node/v6.11.0/bin/:/usr/local/bin:/usr/bin:/bin ROOT_URL=https://team.example.com MONGO_URL=mongodb://team:<password>@localhost/team_db1 BIND_IP=127.0.0.1 PORT=3001 METEOR_SETTINGS={"ENV":"prod","migration":{"gamification":"0"},"cron":{"enable":"1"},"mongo":"",... }
我把这个文件和ssh环境联系起来:
ln -s〜/ config.env〜/ .ssh / environment
我在〜/ .bashrc中find了相同的文件
source ~/config.env
JSONstring的引号解释有问题。
这个configuration适用于ssh:
ssh [email protected] env
METEOR_SETTINGS={"ENV":"prod","migration":{"gamification":"0"},"cron":{"enable":"1"} ...
但是这在当地并不适用
源码config.env
ENV
METEOR_SETTINGS={ENV:prod,migration:{gamification:0},cron:{enable:1}, ...
所有的双引号消失,使JSON对象本地无效。
如果我单引号所有的string,JSON对象在本地有效,但单引号出现在string通过SSH使它无效远程。
我怎样才能正确加载我的JSON var在2环境?