2017-08-23 4 views
0

Je veux lancer un sous-shell avec son CWD pour être du processus enfant, pas le parent et en même temps transmettre des variables env.lancement sous-shell avec différentes variables env cwd et pass

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) 

c'est ce que j'ai pour le moment. Lorsque je lance ce script, j'obtiens l'erreur suivante.

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

Merci!

Répondre

1

exec traite son premier argument en tant que programme à exécuter et n'autorise pas les affectations de variables à précéder le programme. Mais il y a deux autres options: soit préfixe lui-même commande exec avec les missions que vous voulez (essentiellement, il suffit de déplacer exec après les missions):

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

Ou export les variables avant d'exécuter exec (variables peuvent être exportées à partir du shell parent ou du sous-shell):

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