'cd' 命令不适用于 fabric3
'cd' command not working with fabric3
我正在使用 fabric3 (https://pypi.python.org/pypi/Fabric3),python 3 端口的 fabric。
我有以下功能:
@roles('production')
def dir():
run('pwd')
run('ls')
cd('/home/deploy/mydir')
run('pwd')
输出:
$ fab dir
[deploy@196.x.x.x] Executing task 'dir'
[deploy@196.x.x.x] run: pwd
[deploy@196.x.x.x] out: /home/deploy
[deploy@196.x.x.x] out:
[deploy@196.x.x.x] run: ls
[deploy@196.x.x.x] out: Env mysite
[deploy@196.x.x.x] out:
[deploy@196.x.x.x] run: pwd
[deploy@196.x.x.x] out: /home/deploy
[deploy@196.x.x.x] out:
为什么忽略CD?
每个命令在单独的 "environment" 中工作。
cd()
更改文件夹但下一个命令以新的开始,清除 "environment".
但是你可以使用 with
:
with cd("<path>"):
run("<command>")
在 Fabric 文档中查看更多内容:Context Managers
或者您可以手动执行
run("cd <path> && <command>")
我正在使用 fabric3 (https://pypi.python.org/pypi/Fabric3),python 3 端口的 fabric。
我有以下功能:
@roles('production')
def dir():
run('pwd')
run('ls')
cd('/home/deploy/mydir')
run('pwd')
输出:
$ fab dir
[deploy@196.x.x.x] Executing task 'dir'
[deploy@196.x.x.x] run: pwd
[deploy@196.x.x.x] out: /home/deploy
[deploy@196.x.x.x] out:
[deploy@196.x.x.x] run: ls
[deploy@196.x.x.x] out: Env mysite
[deploy@196.x.x.x] out:
[deploy@196.x.x.x] run: pwd
[deploy@196.x.x.x] out: /home/deploy
[deploy@196.x.x.x] out:
为什么忽略CD?
每个命令在单独的 "environment" 中工作。
cd()
更改文件夹但下一个命令以新的开始,清除 "environment".
但是你可以使用 with
:
with cd("<path>"):
run("<command>")
在 Fabric 文档中查看更多内容:Context Managers
或者您可以手动执行
run("cd <path> && <command>")