

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 构建环境中的 Shell 和命令
<a name="build-env-ref-cmd"></a>

您为 AWS CodeBuild 提供了一组命令，用于在构建的生命周期期间（例如，安装构建依赖项、测试和编译您的源代码）在构建环境中运行。可通过多种方式指定这些命令：
+ 创建构建规范文件并将其包含在您的源代码中。在此文件中，指定您要在构建生命周期的每个阶段运行的命令。有关更多信息，请参阅[的构建规范参考 CodeBuild](build-spec-ref.md)。
+ 使用 CodeBuild 控制台创建构建项目。在**插入构建命令**中，对于**构建命令**，输入您要在 `build` 阶段运行的命令。有关更多信息，请参阅 [创建构建项目（控制台）](create-project.md#create-project-console)。
+ 使用 CodeBuild 控制台更改构建项目的设置。在**插入构建命令**中，对于**构建命令**，输入您要在 `build` 阶段运行的命令。有关更多信息，请参阅 [更改构建项目的设置（控制台）](change-project.md#change-project-console)。
+ 使用 AWS CLI 或 AWS 开发工具包创建生成项目或更改生成项目的设置。参考包含构建规范文件以及您的命令的源代码，或指定一个包含同等构建规范文件的内容的字符串。有关更多信息，请参阅[创建构建项目](create-project.md)或[更改构建项目设置](change-project.md)。
+ 使用 AWS CLI 或 AWS 开发工具包开始构建，指定构建规范文件或一个包含同等构建规范文件内容的字符串。有关更多信息，请参阅 `buildspecOverride` 中 [手动运行构建](run-build.md) 值的描述。

您可以指定任何 Shell 命令语言 (sh) 命令。在 buildspec 版本 0.1 中，CodeBuild 在构建环境内单独的实例中运行每个 Shell 命令。这表示各个命令独立于其他所有命令而运行。因此，在默认情况下，您无法运行依赖所有上一个命令状态的单个命令（如更改目录或设置环境变量）。要绕开此限制，建议使用版本 0.2 来解决此问题。如果您必须使用版本 0.1，我们建议使用以下方法：
+ 在包含您要在默认 Shell 的单个实例中运行的命令的源代码中包含一个 Shell 脚本。例如，您可以在包含 `my-script.sh` 等命令的源代码中包含一个名为 `cd MyDir; mkdir -p mySubDir; cd mySubDir; pwd;` 的文件。然后，在您的 buildspec 文件中，指定命令 `./my-script.sh`。
+ 在您的 buildspec 文件中，或对于仅针对 `build` 阶段的**构建命令**设置，输入包含您想在默认 Shell 的单个实例中运行的所有命令的单个命令（例如，`cd MyDir && mkdir -p mySubDir && cd mySubDir && pwd`）。

如果 CodeBuild 遇到错误，那么与在默认 Shell 的实例中运行单个命令相比，错误更难排除。

在 Windows Server Core 映像中运行的命令使用 Powershell shell。