在bash shell和ssh shell中加载JSON varenv

上下文

我在本地部署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环境?