我有一个远程 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