改变配方中的工作目录

每一行配方都由一个新的 Shell 执行,所以如果你在某一行改变了工作目录,对后面的行不会有影响:

foo:
  pwd    # This `pwd` will print the same directory…
  cd bar
  pwd    # …as this `pwd`!

有几个方法可以解决这个问题。一个是在你想运行的命令的同一行调用 cd

foo:
  cd bar && pwd

另一种方法是使用 Shebang 配方。Shebang 配方体被提取并作为脚本运行,因此一个 Shell 实例将运行整个配方体,所以一行的 pwd 改变将影响后面的行,就像一个 Shell 脚本:

foo:
  #!/usr/bin/env bash
  set -euxo pipefail
  cd bar
  pwd