Для проекта, над которым я работаю, нам нужны nginx и lua, и мы запускаем его так:
MYVAR1=some_value MYVAR2=some_value /usr/local/openresty/nginx/sbin/nginx -p `pwd`/ -c nginx.conf
И все работает. Если вместо этого мы сделаем это:
export MYVAR1=some_value
export MYVAR2=some_value
/usr/local/openresty/nginx/sbin/nginx -p `pwd`/ -c nginx.conf
Затем сценарий lua, запущенный внутри рабочего процесса, жалуется, что MYVAR1 и MYVAR2 не установлены. В чем разница между этими двумя и почему nginx + lua не собирает их во второй версии?
Если работает под bash
, не должно быть никакой разницы, кроме этой MYVAR1
и MYVAR2
будет по-прежнему иметь то же значение один раз /usr/local/openresty/nginx/sbin/nginx
завершено выполнение. В первом синтаксисе, который вы показали, переменные будут существовать только в течение времени жизни nginx
исполнение.
Теперь, если вы не используете bash
, (например, /bin/sh
или другая оболочка, совместимая с POSIX) вам может потребоваться альтернативный синтаксис, задав переменные среды перед export
их:
MYVAR1=some_value
export MYVAR1
MYVAR2=some_value
export MYVAR2
Я не уверен, что вы делаете это через терминал оболочки или через сценарий оболочки, но вы можете определить это с помощью:
ps -ef | grep $$ | grep -v grep
Если это /bin/sh
, или какая-то другая оболочка, это ваша проблема. Если вы делаете это внутри сценария оболочки, вы можете изменить строку shebang (#!/...
вверху файла), чтобы #!/bin/bash
вместо того #!/bin/sh
или используйте sh-совместимый синтаксис.