python - 使用 Fabric 1.6.0 设置 $PATH 变量

标签 python fabric

我正在尝试运行我在远程服务器上的主目录中安装的命令。它已经添加到我的 .bash_profile 中的 $PATH 中。通过正常的 ssh session 远程登录时,我可以使用它,但 Fabric 似乎没有引入我的 $PATH。因此,我尝试使用 Fabric 的 path context manager 将它添加到我的 $PATH 中像这样:

def test_path():
    print('My env.path setting: %(path)s' % env)
    with path('/path/to/sources/drush'):
        run('echo $PATH')
        run('drush')

Fabric 响应:

Executing task 'test_path'
My env.path setting:
run: echo $PATH
out: /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
out:

run: echo $PATH
out: /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/path/to/sources/drush
out:

run: drush
out: /bin/bash: drush: command not found
out:

Fatal error: run() received nonzero return code 127 while executing!

Requested: drush
Executed: /bin/bash -l -c "export PATH=\"\$PATH:\"/path/to/sources/drush\" \" && drush"

Aborting.

谢谢你看...

最佳答案

问题在于设置 PATH 变量的方式 - 在它的末尾有一个额外的空格字符:

/bin/bash -l -c "export PATH=\"\$PATH:\"/path/to/sources/drush\" \" && drush"
                                                                ^HERE

搜索路径中的最后一个目录被 bash 解释为“/path/to/source/drush”(尾随空格)- 无效目录。

关于python - 使用 Fabric 1.6.0 设置 $PATH 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15533841/

相关文章:

python - fabric 1.0.0 中的高 CPU 使用率

python - Fabric:如何提示用户在 env.roledefs 中定义的主机之间进行输入?

python Fabric - 将主机作为参数传递

python - Pandas/Numpy NaN None 比较

python - conda中的新环境可以从基础环境继承特定的包吗

python - 在 Fabric 中移动隐藏文件

python - Fabric下载时如何维护权限

Python:可能是列表也可能不是列表的参数的最佳实践

python 逻辑回归(初学者)

python - 如何在 Eclipse 上运行 pytest?