如何让 Fabric 使用默认 shell 的 bash shell 读取?

问题描述

我正在尝试使用 Fabric (python3)。我的删除服务器使用“ksh”外壳,但我需要使用“bash”外壳。我如何使用 Fabric 实现这一目标?

解决方法

我使用名为 FABRIC_RUN_SHELL 的环境变量执行此操作。例如:

export FABRIC_RUN_SHELL=/usr/bin/bash

你也可以直接在你的 fabfile.py 中配置:

@task
def my_task(c):
    pass

@task
def my_task2(c):
    pass

ns = Collection(my_task)
ns.configure({'run': {'shell': '/usr/bin/bash'}})

还有其他选项,例如从配置文件加载。令人困惑的是,所有细节都在 Invoke configuration docs 中,而不是 Fabric 文档中。 Fabric configuration docs 中提到了您使用 FABRIC_ 前缀而不是 INVOKE_ 的事实。