Fabric(Ubuntu 13.04上的版本1.7.0)遇到了一些问题。使用Fabric嵌套cd调用时发生意外的行为
考虑一下这个功能:
def does_not_work():
with cd('/absolute/folder/one/'):
with prefix('change_path_command'):
with cd('/absolute/folder/two/'):
run('some_random_command')
我希望它作为执行相同的命令:
def works():
run('cd /absolute/folder/one/ && change_path_command && cd /absolute/folder/two/ && some_random_command')
然而,这里是fab does_not_work
的面料输出:
Requested: some_random_command
Executed: /bin/bash -l -c "cd /absolute/folder/two/ && change_path_command && some_random_command"
它似乎嵌套cd
s正在引起我的麻烦。
有没有很好的解释?
感谢您的回答!在[文档](http://docs.fabfile.org/en/1.7/api/core/context_managers.html#fabric.context_managers.cd)中,他们实际上展示了如何嵌套'cd'命令,但第一个是绝对的,第二个是相对的。我怎样才能实现我想要实现的目标?仅供参考,第一个绝对路径是virtualenv的安装位置,前缀命令是激活virtualenv的'source bin/activate',第二个绝对路径是执行最终命令的位置。 – astorije