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