Warp Custom Git Bash Path Guide | Generated by AI
Based on the code, here’s the answer:
Custom Executable Path for Git Bash in Warp (Windows)
Path Separator: Use \ (backslash)
From resolve_executable in app/src/util/path.rs:97:
if command.contains(path::MAIN_SEPARATOR) {
let path = Path::new(command);
return file_exists_and_is_executable(path).then_some(Cow::Borrowed(path));
}
On Windows, path::MAIN_SEPARATOR is \. The code checks if your input contains the OS separator to decide whether to treat it as a direct path vs a PATH lookup. So use:
C:\Program Files\Git\usr\bin\bash.exe
Forward slashes / will NOT be recognized as a path separator and will trigger a PATH lookup instead (which will fail for an absolute path like C:/Program Files/...).
--login -i Arguments: Warp Adds Them Automatically
You do NOT need to specify --login -i in the custom path field.
From msys2_arguments_for_session_spawning_command in app/src/terminal/local_tty/shell.rs:685-704:
fn msys2_arguments_for_session_spawning_command(shell_type: ShellType) -> Vec<OsString> {
match shell_type {
ShellType::Bash => {
vec![
"--noprofile".to_string().into(),
"--norc".to_string().into(),
]
}
// ...
}
}
And from ShellStarter::init at line 79-94, when Warp detects a Git Bash path (via is_msys2_path), it automatically creates an MSYS2 shell starter with these args.
For non-MSYS2 bash, it uses arguments_for_session_spawning_command (line 574-605) which wraps bash with -c 'exec -a bash <path> --rcfile <(echo <init_script>)'.
Key: Warp manages the bootstrap arguments itself. The custom path field is just the executable path.
What Happens When You Type a Custom Path
- Settings UI (
startup_shell.rs:186):AvailableShell::try_from(buffer_text.as_str())is called - Validation (
local_tty/shell.rs:543):resolve_executablechecks the path exists and is executable - Git Bash detection (
local_tty/shell.rs:80-94):canonicalize_git_bash_pathconvertsGit\bin\bash.exe→Git\usr\bin\bash.exe, thenis_msys2_pathchecks if it’s an MSYS2 shell - If MSYS2 detected: Warp creates
ShellStarter::MSYS2with--noprofile --norcargs (not--login -i) - If not MSYS2: Warp creates
ShellStarter::Directwith the standard bash bootstrap args
Summary
| Setting | Value |
|---|---|
| Custom path | C:\Program Files\Git\usr\bin\bash.exe |
| Path separator | \ (backslash) |
--login -i |
Don’t add — Warp handles shell args automatically |
| Default shell | Select “Custom” in Settings → Features, paste the path |