1

У меня есть скрипт удаленного bash (в /home/web/web/scripts/setenv.sh), отвечающий за экспорт переменных среды:

#!/bin/bash
export SYMFONY__ENV__MAILER__USER=noreply@mydomain.com

На локальной машине мне хотелось бы подключиться к этой удаленной машине и выполнить команду. Эта команда должна сначала настроить переменные окружения, а затем использовать их в команде (здесь я просто распечатаю ее):

ssh web@mmachine.mydomain.com "source /home/web/web/scripts/setenv.sh && echo ${SYMFONY__ENV__MAILER__USER}"

Результатом эха является пустая строка.

Я также попробовал это, но это дает тот же результат:

ssh web@mmachine.mydomain.com "/bin/bash -c '. /home/web/web/scripts/setenv.sh && echo ${SYMFONY__ENV__MAILER__USER}'"

Почему эхо не печатает noreply@mydomain.com?

1 ответ1

1
ssh web@mmachine.mydomain.com "source /home/web/web/scripts/setenv.sh && echo ${SYMFONY__ENV__MAILER__USER}"

Это оценивает переменную в вашей локальной оболочке. Чтобы оценить переменную в удаленной оболочке, вы должны передать команду в одинарных кавычках:

ssh web@mmachine.mydomain.com 'source /home/web/web/scripts/setenv.sh; echo ${SYMFONY__ENV__MAILER__USER}'

Это должно сделать работу. По крайней мере, минимальный репродуктор работает для меня:

$ ssh machine 'VAR=test; echo $VAR'
test

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .