ssh 命令不导出环境变量

ssh 命令不导出环境变量

我有一个远程 bash 脚本(在/home/web/web/scripts/setenv.sh)负责导出环境变量:

#!/bin/bash
export [email protected]

在本地机器上,我希望能够 ssh 到远程机器并执行命令。该命令应首先设置环境变量,然后在命令中使用它们(这里,我只是将其打印出来):

ssh [email protected] "source /home/web/web/scripts/setenv.sh && echo ${SYMFONY__ENV__MAILER__USER}"

回显的结果是一个空字符串。

我也尝试过这个,但结果是一样的:

ssh [email protected] "/bin/bash -c '. /home/web/web/scripts/setenv.sh && echo ${SYMFONY__ENV__MAILER__USER}'"

为什么没有打印回声[email protected]

答案1

ssh [email protected] "source /home/web/web/scripts/setenv.sh && echo ${SYMFONY__ENV__MAILER__USER}"

这将在本地 shell 中评估变量。要评估远程 shell 中的变量,应在单引号中传递命令:

ssh [email protected] 'source /home/web/web/scripts/setenv.sh; echo ${SYMFONY__ENV__MAILER__USER}'

它应该能完成工作。至少最小的复制程序对我来说是有效的:

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

相关内容