

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

# 构建环境中的 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 软件开发工具包开始构建，指定一个 buildspec 文件或包含等效 buildspec 文件内容的单个字符串。有关更多信息，请参阅 [手动运行构建](run-build.md) 中 `buildspecOverride` 值的描述。

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

如果 CodeBuild 遇到错误，与在自己的默认 shell 实例中运行单个命令相比，可能更难排除错误。

在 Windows 服务器核心映像中运行的命令使用 PowerShell 外壳。