【问题标题】:launch subshell with different cwd and pass env variables使用不同的 cwd 启动子 shell 并传递 env 变量
【发布时间】:2018-01-31 11:22:35
【问题描述】:

我想启动一个子shell,它的CWD是子进程,而不是父进程,同时传入环境变量。

REGION=$1
DEFAULT_MARKET=$2
NODE_ENV=$3
(cd ../core-services && exec PORT=3008 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV node app/server/server.js)

这是我目前所拥有的。当我运行此脚本时,出现以下错误。

Starting services with REGION=AA DEFAULT_MARKET=US NODE_ENV=local-qat2
./locale-changer.sh: line 37: exec: PORT=3008: not found

谢谢!

【问题讨论】:

    标签: node.js bash macos shell subshell


    【解决方案1】:

    exec 将其第一个参数视为要运行的程序,并且不允许变量赋值在程序之前。但是还有其他几个选项:或者在 exec 命令本身前面加上您想要的分配(基本上,只需在分配之后移动 exec):

    (cd ../core-services && PORT=3008 REGION=$REGION DEFAULT_MARKET=$DEFAULT_MARKET NODE_ENV=$NODE_ENV exec node app/server/server.js)
    

    或者export运行exec之前的变量(变量可以从父shell或子shell导出):

    export REGION=$1
    export DEFAULT_MARKET=$2
    export NODE_ENV=$3
    (export PORT=3008; cd ../core-services && exec node app/server/server.js)
    

    【讨论】:

      猜你喜欢
      • 2017-06-30
      • 1970-01-01
      • 2022-06-11
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-28
      • 1970-01-01
      相关资源
      最近更新 更多