2017-08-23 3 views
0

Ich möchte eine Subshell mit seiner CWD, um der Kind-Prozess, nicht die Eltern und gleichzeitig in Env-Variablen übergeben werden.starten Subshell mit verschiedenen cwd und pass Env Variablen

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) 

das ist, was ich im Moment habe. Wenn ich dieses Skript ausführe, erhalte ich diesen folgenden Fehler.

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

Vielen Dank!

Antwort

1

exec behandelt das erste Argument als das Programm, das ausgeführt werden soll, und erlaubt keine Variablenzuweisungen vor dem Programm. Aber es gibt ein paar andere Möglichkeiten: entweder das Präfix den exec Befehl selbst mit den Zuordnungen, die Sie wollen (im Wesentlichen nur exec nach den Zuweisungen bewegen):

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

Oder export die Variablen vor exec (Variablen ausgeführt wird, können exportiert werden entweder von der Elternhülle oder von der Unterschale):

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