来自 Fabric 文件的远程环境变量

Remote environment variable from file with Fabric

我正在尝试使用 Fabric 在远程服务器上做一个简单的 echo $MYVAR。

环境变量在远程主机上我的 ~/.bashrc 文件中。

我试过:

run("source /home/<myusername>/.bashrc && echo $MYVAR")

这只是打印一个空字符串。 运行 它在远程机器上登录时打印“5”,即 bashrc 文件中的值。有谁知道为什么会这样?

我需要从远程主机上的文件设置环境变量,而不是由 Fabric 决定。

我运行 ssh 命令为<myusername>,所以用户名似乎是正确的。这似乎是 this question 的重复,只是它们可能是 运行 作为错误用户的东西。我还尝试了 shellrun 的参数,但没有成功。

我还没有尝试过各种类似上下文管理器的东西,因为它们似乎只是 command1 && command2 的 shorthand。

首先,as explained in the answer you link to,fabric 使用 login shellnot交互式 shell,这意味着您的 ~/.bahsrc 不会在遥控器上获得来源。您应该在 ~/.bash_profile~/.profile.

中导出变量

如果没有您的遥控器的相关内容~/.bashrc,则无法判断您的命令失败的原因。