

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

您可以提供一組命令 AWS CodeBuild ，讓 在建置生命週期期間於建置環境中執行 （例如，安裝建置相依性，以及測試和編譯原始程式碼）。有幾種方式可以指定這些命令：
+ 建立建置規格檔案，並將其包含在您的來源碼中。在這個檔案中，指定您想在每個建置生命週期階段執行的命令。如需詳細資訊，請參閱 [CodeBuild 的建置規格參考](build-spec-ref.md)。
+ 使用 CodeBuild 主控台建立建置專案。在 **Insert build commands (插入組建命令)** 的 **Build commands (組建命令)** 中，輸入您想在 `build` 階段執行的命令。如需詳細資訊，請參閱[建立組建專案 (主控台)](create-project.md#create-project-console)。
+ 使用 CodeBuild 主控台變更建置專案的設定。在 **Insert build commands (插入組建命令)** 的 **Build commands (組建命令)** 中，輸入您想在 `build` 階段執行的命令。如需詳細資訊，請參閱[變更建置專案的設定 (主控台)](change-project.md#change-project-console)。
+ 使用 AWS CLI AWS SDKs建立建置專案或變更建置專案的設定。參考來源碼 (其中包含 Buildspec 檔案與您的命令)，或者指定單一字串以包含相同 Buildspec 檔案的內容。如需詳細資訊，請參閱 [建立組建專案](create-project.md) 或 [變更建置專案設定](change-project.md)。
+ 使用 AWS CLI AWS SDKs啟動組建，指定 buildspec 檔案或包含同等 buildspec 檔案內容的單一字串。如需詳細資訊，請參閱 [手動執行組建](run-build.md) 中針對 `buildspecOverride` 值的描述。

您可以指定任何 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 commands (組建命令)** 設定 (僅限 `build` 階段) 中，輸入單一命令，以包含您希望在預設 shell 單一執行個體中執行的所有命令 (例如 `cd MyDir && mkdir -p mySubDir && cd mySubDir && pwd`)。

如果 CodeBuild 遇到錯誤，與在預設 shell 的自身執行個體中執行單一命令相比，錯誤可能更難進行故障診斷。

在 Windows Server Core 映像中執行的命令會使用 PowerShell shell。