Windows

Command Line Interface

Tools I recommend you install on Windows

Node Version Manager: Node, NPM, and Bun

Learn how to install the npm with nvm-windows!
Terminal
nvm on
nvm install stable
nvm use stable
node --version
npm --version
npm               # to see if there is a version to upgrade to
npm install -g bun
# npm install -g bun@1.2.4  # (to upgrade or use a specific version of `bun`)
npm install -g pnpm
# npm install -g pnpm@9.0.0  # (to upgrade or use a specific version of `npm`)
bun --version
pnpm --version

Rust

The tools below are listed in the recommended installation order (as rust requires the Microsoft C++ Build Tools).

Terminal
rustup default stable-msvc
rustup update

Rust Tools

Terminal
cargo install just
cargo install eza

Oh My Bash

Oh My Bash is an open source, community-driven framework for managing your Bash configuration.

Installation

Terminal
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"

Configuration

Oh My Bash is configured via ~/.bashrc. Key settings:

~/.bashrc
# Set your theme (see ~/.oh-my-bash/themes/)
OSH_THEME="powerline"

# Enable plugins
plugins=(git bashmarks progress)

# Enable completions
completions=(git composer ssh)
Run bash in Windows Terminal's Git Bash profile to use Oh My Bash alongside your other shells.

Dotfiles

I manage my shell configuration with a dotfiles repo that syncs across machines. On Windows, this covers .bashrc, .bash_profile, shared aliases, and AI agent configuration.

Terminal
git clone git@github.com:iancleary/dotfiles.git ~/dotfiles
cd ~/dotfiles
./sync-dotfiles.sh push   # Install configs from repo
./sync-dotfiles.sh pull   # Backup current configs to repo
./sync-dotfiles.sh status # Check for differences

The sync utility detects the OS and installs the appropriate files — bash configs on Windows, zsh configs on macOS/Linux. Shared utilities (aliases, git worktree helpers, Claude/Codex configs) are installed on all platforms.

What Gets Synced (Windows)

  • .bashrc — Oh My Bash configuration
  • .bash_profile — Bash profile
  • .common/aliases.sh — Shell aliases (eza, git, docker, cargo, just)
  • .common/agents-git-trees.sh — Git worktree helpers (ga/gd)
  • .claude/ — Claude Code settings, skills, principles
  • .codex/ — Codex CLI rules and MCP servers

AI Tools

OpenAI Codex CLI

Terminal
npm i -g @openai/codex

Claude Code CLI

Terminal
curl -fsSL https://claude.ai/install.sh | bash

Git for Windows

https://git-scm.com/downloads/win

Windows Terminal

This disables git for windows "white screen" flashing on pressing the tab key when there are multiple options available. For example, hit tab in your home directory after ls D when there are both a Documents folder and a Development folder. Without this fix, there would be a white flash of the screen and possibly a audible bell sound.

https://github.com/microsoft/terminal/issues/7308

https://github.com/microsoft/terminal/issues/7200

Git for Windows does install an /etc directory, perhaps mapped within C:\Program Files\Git\etc and an /etc/inputrc file that includes set bell-style visible.

I just made a copy to my local folder and commented that bell style line as follows

cd go to your home directory in git for windows or the Window's terminal's Git for Bash profile.

Terminal
cat /etc/inputrc > .inputrc

print inputrc content to .inputrc file in your home directory... don't forget the DOT

Now edit your local file

Terminal
# before
set bell-style visible
# after
set bell-style none