To launch Windows Terminal and execute a Git Bash command immediately, you must configure the
startupCommand setting within your specific profile rather than relying on global defaults or legacy command-line arguments. This approach ensures that every time you open that profile, it automatically runs your desired script or command upon initialization, providing a seamless workflow for developers who need immediate access to their environment.
Understanding Windows Terminal Profiles
Windows Terminal uses a JSON configuration file to manage all aspects of its behavior, including which shells are available and how they behave. Each shell, such as Git Bash, PowerShell, or Command Prompt, is defined as a separate profile within this configuration. The critical distinction for automation lies in understanding the difference between general settings and individual profile settings. Many users mistakenly attempt to set commands in the global
defaults section, but this often leads to conflicts or ignored instructions because the system prioritizes profile-specific overrides. To achieve an automatic command execution, you need to target the specific entry for Git Bash in your settings file.
Locating and Editing the Configuration File
The first step is to access the configuration file where these profiles are stored. You can open the settings editor directly from the Windows Terminal interface by pressing
Ctrl + ,. This action opens the
settings.json file in your default text editor, typically Visual Studio Code or Notepad. If you prefer manual editing, the file is located at
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json. It is advisable to keep a backup of this file before making changes, as syntax errors can prevent the terminal from launching correctly. Once the file is open, locate the
profiles object, which contains an array of all your available terminals.
Configuring the startupCommand Setting
Inside the
profiles array, find the object corresponding to Git Bash. It usually has a
guid or
name field identifying it. Within this specific object, add a new key-value pair:
"startupCommand": "your_command_here". Replace
your_command_here with the actual command you wish to run. For example, if you want to navigate to a specific project directory, you might use
"cd /c/Users/YourName/Documents/Project". Note that Git Bash uses Unix-style paths, so ensure you use forward slashes and the correct drive letter mapping. This setting tells Windows Terminal to execute this string immediately after the shell initializes but before presenting the interactive prompt.
Differentiating Between Startup Command and Initial Directory
It is common to confuse the
initialStartPath setting with
startupCommand. While
initialStartPath simply changes the working directory,
startupCommand executes an arbitrary command. If you only need to change directories,
initialStartPath is sufficient and safer. However, if you need to run scripts, source environment variables, or initialize complex environments,
startupCommand is the required tool. Be aware that some commands may interfere with the shell's ability to display the prompt properly if they output excessive data or exit prematurely. Test your command in a standard Git Bash session first to ensure it behaves as expected when launched non-interactively.
Verifying and Troubleshooting
After saving the
settings.json file, close any existing instances of Windows Terminal and reopen it. Select the Git Bash profile from the dropdown menu. The terminal should open, briefly show any output from your command, and then present the normal Bash prompt. If the terminal closes immediately, check the command for syntax errors or ensure it does not contain an explicit
exit statement. For more complex scenarios involving multiple commands, you can chain them using
&& or
; within the
startupCommand string. If you encounter issues, refer to related guides on managing terminal previews or troubleshooting batch file execution to isolate environment-specific problems.
How to Start Windows Terminal and Run Bash Command Immediately provides additional context on similar automation techniques for other shells.
Frequently Asked Questions
Can I use startupCommand for PowerShell profiles?
Yes, the
startupCommand setting works identically for PowerShell, PowerShell Core, and Command Prompt profiles. You simply apply the same JSON structure within the respective profile object. Ensure that the command syntax matches the shell's native language, such as using PowerShell cmdlets instead of Bash commands.
Why does my terminal close immediately after running the command?
This usually happens if the executed command causes the shell to exit or if there is a syntax error in the JSON configuration. Check that your command does not include an explicit
exit call and verify that the JSON syntax is valid, particularly around quotes and commas.
Is it possible to pass arguments to the startupCommand?
You can include arguments directly within the string assigned to
startupCommand, provided they are properly escaped. For complex scripts, it is often cleaner to write a standalone script file and call that script via
startupCommand to avoid quoting issues.
Does this method work for Windows Terminal Preview?
Yes, the configuration structure for Windows Terminal Preview is virtually identical to the stable release. Both versions use the same
settings.json format and support the
startupCommand property in profile definitions.
What is the alternative if I don't want to edit JSON?
If you prefer not to edit the JSON file manually, you can use the built-in Settings UI in Windows Terminal. Navigate to the specific profile, scroll down to the Advanced settings, and look for the Startup Command field. This UI updates the underlying JSON file automatically when you save.