GitHub Actions Workflow Syntax: ‘shell’ – Specifying the Shell for Your Commands

GitHub Actions Workflow Syntax: ‘shell’ – Specifying the Shell for Your Commands

In the ecosystem of GitHub Actions, the ‘shell’ keyword plays a crucial role in defining the execution environment for your commands. This blog post will cover the ‘shell’ keyword in the GitHub Actions Workflow syntax, explaining its syntax, demonstrating its usage, and providing examples.


GitHub Actions Workflows enable automation of software development processes such as building, testing, and deploying applications. Workflows are composed of ‘jobs’ and ‘steps’, where each job contains steps that perform specific tasks. When a command is to be run in a step, the ‘shell’ keyword can be used to specify which shell is used for that command.

Understanding the ‘shell’ Syntax

In GitHub Actions Workflow syntax, the ‘shell’ keyword is used within a step to specify the type of shell that executes the commands in the ‘run’ context.

Here is a basic structure of how ‘shell’ is used within a step:

In this syntax, ‘shell_type’ is one of the supported shell types (e.g., bash, sh, cmd, powershell, etc.) that you want to use to execute the command. If not specified, GitHub Actions will use the default shell for the runner’s operating system.

Example of ‘shell’ in a Workflow

To illustrate the ‘shell’ keyword, let’s consider a workflow where a script is executed using PowerShell on a Windows runner:

In this workflow, the ‘build’ job consists of two steps. The first step checks out the code using the actions/checkout@v2 action. The second step uses the ‘shell’ keyword to specify that the script is to be run using PowerShell.


The ‘shell’ keyword in GitHub Actions Workflow syntax gives developers control over the shell environment in which commands are executed. This level of control can be essential when scripts require a specific shell, or when optimizing the environment for performance or compatibility reasons.