Bash-To-ZSH-Initialization streamlines the transition from Bash to Zsh by automating the install of Zsh, Oh My Zsh, Powerlevel10k, and a curated set of plugins + tools on macOS and Linux.
- Detects your platform / package manager:
- macOS → Homebrew (
brew) - Arch / Manjaro → Pacman (
pacman) - Debian / Ubuntu → APT (
apt-get)
- macOS → Homebrew (
- Updates repositories and installs common CLI tools (quietly; logs printed only on errors).
- Installs Oh My Zsh in non-interactive mode (it does not auto-switch to zsh and does not change your default shell during install).
- Installs Zsh plugins using the best method per platform:
- packaged when available (with an Oh My Zsh wrapper so
plugins=(...)works) - otherwise via git clone (and updates on re-run)
- packaged when available (with an Oh My Zsh wrapper so
- Copies your template configs from
./configto:~/.zshrc~/.p10k.zsh
- Patches
~/.zshrcafter copy (the repo templates are not meant to be edited manually):- enables Pywal lines if you answered “Yes”
- replaces a single
fastfetch/neofetchline with an auto-select block - enforces a consistent
plugins=(...)order - makes
lssafe: useslsdif installed, otherwise falls back tols -la
- Optionally sets Zsh as your default shell (
chsh) at the end. - Cleans up the cloned directory at the end (see notes).
Base packages (installed on all supported platforms):
bat(Debian/Ubuntu may expose it asbatcat; the script creates abatsymlink when needed)btop,curl,fzf,git,lsd,neovim,wget,zsh
Fetch tool:
- macOS / Arch:
fastfetch - Debian / Ubuntu:
neofetch(and the script can still usefastfetchif you install it yourself later)
Ubuntu 24.04+ note: the
thefuckAPT package is currently broken on some setups (Pythondistutilsremoval), so the script does not install it there by default. See “Troubleshooting”.
The script enforces a consistent plugin order (after config copy). Enabled plugins include:
gitzsh-autosuggestionszsh-syntax-highlightingyou-should-usezsh-batzsh-z(provides thezcommand)fzfextractcommand-not-foundthefuck(when available / stable on your platform; see Troubleshooting)
- macOS (Homebrew required)
- Arch Linux (Pacman)
- Debian (APT)
- Ubuntu (APT)
- Works well in VMware and WSL as long as the package manager is supported.
Clone the project (recommended in /tmp because the script can remove the folder during cleanup):
cd /tmp
git clone https://github.com/MushuDG/Bash-To-ZSH-Initialization.git
cd Bash-To-ZSH-Initialization
chmod +x install.sh./install.sh- Back up your current config if you have one: the script overwrites
~/.zshrcand~/.p10k.zsh. - macOS: you must install Homebrew first.
- Ubuntu 24.04+: if you see errors with
thefuck, remove it fromplugins=(...)in~/.zshrcor install it via another method (pipx, pip, etc.). - The script needs an internet connection (packages + GitHub).
- Cleanup may remove the cloned folder. Keep the repo in a disposable location (like
/tmp) when running the installer.
Powerlevel10k doesn't require custom fonts but can take advantage of them if they are available. It works well with Nerd Fonts, Source Code Pro, Font Awesome, Powerline, and even the default system fonts. The full choice of style options is available only when using Nerd Fonts.
👇 Recommended font: Meslo Nerd Font patched for Powerlevel10k. 👇
Gorgeous monospace font designed by Jim Lyles for Bitstream, customized by the same for Apple, further customized by André Berg, and finally patched by yours truly with customized scripts originally developed by Ryan L McIntyre of Nerd Fonts. Contains all glyphs and symbols that Powerlevel10k may need. Battle-tested in dozens of different terminals on all major operating systems.
If you are using iTerm2 or Termux, p10k configure can install the recommended font for you.
Simply answer Yes when asked whether to install Meslo Nerd Font.
If you are using a different terminal, proceed with manual font installation. 👇
- Download these four ttf files:
This project is released under the MIT license.