来自 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 的重复,只是它们可能是 运行 作为错误用户的东西。我还尝试了 shell
到 run
的参数,但没有成功。
我还没有尝试过各种类似上下文管理器的东西,因为它们似乎只是 command1 && command2 的 shorthand。
首先,as explained in the answer you link to,fabric 使用 login shell、not 和 交互式 shell,这意味着您的 ~/.bahsrc
不会在遥控器上获得来源。您应该在 ~/.bash_profile
或 ~/.profile
.
中导出变量
如果没有您的遥控器的相关内容~/.bashrc
,则无法判断您的命令失败的原因。
我正在尝试使用 Fabric 在远程服务器上做一个简单的 echo $MYVAR。
环境变量在远程主机上我的 ~/.bashrc 文件中。
我试过:
run("source /home/<myusername>/.bashrc && echo $MYVAR")
这只是打印一个空字符串。 运行 它在远程机器上登录时打印“5”,即 bashrc 文件中的值。有谁知道为什么会这样?
我需要从远程主机上的文件设置环境变量,而不是由 Fabric 决定。
我运行 ssh 命令为<myusername>
,所以用户名似乎是正确的。这似乎是 this question 的重复,只是它们可能是 运行 作为错误用户的东西。我还尝试了 shell
到 run
的参数,但没有成功。
我还没有尝试过各种类似上下文管理器的东西,因为它们似乎只是 command1 && command2 的 shorthand。
首先,as explained in the answer you link to,fabric 使用 login shell、not 和 交互式 shell,这意味着您的 ~/.bahsrc
不会在遥控器上获得来源。您应该在 ~/.bash_profile
或 ~/.profile
.
如果没有您的遥控器的相关内容~/.bashrc
,则无法判断您的命令失败的原因。