{"meta":{"title":"设置默认 shell 和工作目录","intro":"定义将应用于工作流程中的所有作业或作业中所有步骤的默认设置。","product":"GitHub Actions","breadcrumbs":[{"href":"/zh/actions","title":"GitHub Actions"},{"href":"/zh/actions/how-tos","title":"操作方法"},{"href":"/zh/actions/how-tos/write-workflows","title":"编写工作流"},{"href":"/zh/actions/how-tos/write-workflows/choose-what-workflows-do","title":"选择工作流执行的操作"},{"href":"/zh/actions/how-tos/write-workflows/choose-what-workflows-do/set-default-values-for-jobs","title":"设置作业的默认值"}],"documentType":"article"},"body":"# 设置默认 shell 和工作目录\n\n定义将应用于工作流程中的所有作业或作业中所有步骤的默认设置。\n\n## 概述\n\n使用 `defaults` 创建将应用于工作流中所有作业的默认设置的 `map`。 您也可以设置只可用于作业的默认设置。 有关详细信息，请参阅 [`jobs.<job_id>.defaults`](/zh/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_iddefaults)。\n\n使用相同名称定义了多个默认设置时，GitHub 会使用最具体的默认设置。 例如，在作业中定义的默认设置将覆盖在工作流程中定义的同名默认设置。\n\n## 设置默认 shell 和工作目录\n\n你可以使用 `defaults.run` 为工作流中所有 `working-directory` 步骤提供默认的 `run` 和 [](/zh/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsrun) 选项。 你也可以为只可用于作业的 `run` 设定默认设置。 有关详细信息，请参阅 [`jobs.<job_id>.defaults.run`](/zh/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_iddefaultsrun)。 您不能在此关键词中使用上下文或表达式。\n\n使用相同名称定义了多个默认设置时，GitHub 会使用最具体的默认设置。 例如，在作业中定义的默认设置将覆盖在工作流程中定义的同名默认设置。\n\n### 示例：设置默认 shell 和工作目录\n\n```yaml\ndefaults:\n  run:\n    shell: bash\n    working-directory: ./scripts\n```\n\n## 设置特定作业的默认值\n\n使用 `jobs.<job_id>.defaults` 创建将应用于作业中所有步骤的默认设置的 `map`。 您也可以设置整个工作流程的默认设置。 有关详细信息，请参阅 [`defaults`](/zh/actions/reference/workflows-and-actions/workflow-syntax#defaults)。\n\n使用相同名称定义了多个默认设置时，GitHub 会使用最具体的默认设置。 例如，在作业中定义的默认设置将覆盖在工作流程中定义的同名默认设置。\n\n## 设置作业的默认 shell 和工作目录\n\n使用 `jobs.<job_id>.defaults.run` 为作业中的所有 `shell` 步骤提供默认的 `working-directory` 和 `run`。\n\n你可以为作业中所有 `working-directory` 步骤提供默认的 `run` 和 [](/zh/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsrun) 选项。 你也可以为整个工作流的 `run` 设置默认设置。 有关详细信息，请参阅 [`defaults.run`](/zh/actions/reference/workflows-and-actions/workflow-syntax#defaultsrun)。\n\n可以在 `jobs.<job_id>.defaults.run` 和 `jobs.<job_id>.steps[*].run` 级别覆盖这些值。\n\n使用相同名称定义了多个默认设置时，GitHub 会使用最具体的默认设置。 例如，在作业中定义的默认设置将覆盖在工作流程中定义的同名默认设置。\n\n### 示例：为作业设置默认 `run` 步骤选项\n\n```yaml\njobs:\n  job1:\n    runs-on: ubuntu-latest\n    defaults:\n      run:\n        shell: bash\n        working-directory: ./scripts\n```"}