---
title: "zoxide: A smarter cd command for all major shells"
url: https://stacklist.com/card/371a1825-ab9e-4d71-89a5-103fd4ae78cc
source_url: "https://github.com/ajeetdsouza/zoxide"
stack: https://stacklist.com/stack/e311a40b-2cff-4429-b917-63135f507d81
summary: "Zoxide is a smarter cd command for shell navigation that remembers frequently used directories, allowing users to jump to them with minimal keystrokes. The documentation covers installation instructions across Linux, macOS, Windows, BSD, and Android, along with shell setup and configuration details."
tags: "zoxide, command-line, shell-navigation, directory-jumping, installation-guide, cross-platform, productivity"
key_entities: "zoxide (technology), ajeetdsouza (person), fzf (technology), Warp (technology), directory navigation (concept), Bash (technology), PowerShell (technology)"
classification: "reference"
content_hash: "sha256:f097143642aaa43927a3d43278a18df45b17990abbc93ec4c8c43284eef7d99b"
acp_version: "0.2"
token_counts_approximate: 2289
visibility: public
agent_accessible: true
status: "final"
---

# zoxide: A smarter cd command for all major shells

Special thanks to: Warp, built for coding with multiple AI agents. Available for macOS, Linux, and Windows. Visit warp.dev to learn more. Processing over 3TB/s of video at peak load, now hiring in SF. zoxide zoxide is a smarter cd command , inspired by z and autojump. It remembers which directories you use most frequently, so you can "jump" to them in just a few keystrokes. zoxide works on all major shells. Getting started • Installation • Configuration • Integrations Getting started z foo # cd into highest ranked directory matching foo z foo bar # cd into highest ranked directory matching foo and bar z foo / # cd into a subdirectory starting with foo z ~ /foo # z also works like a regular cd command z foo/ # cd into relative path z .. # cd one level up z - # cd into previous directory zi foo # cd with interactive selection (using fzf) z foo &lt; SPACE&gt;&lt;TAB &gt; # show interactive completions (bash 4.4+/fish/zsh only) Read more about the matching algorithm here . Installation zoxide can be installed in 4 easy steps: Install binary zoxide runs on most major platforms. If your platform isn't listed below, please open an issue . Linux / WSL The recommended way to install zoxide is via the install script: curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh Or, you can use a package manager: Distribution Repository Instructions Any crates.io cargo install zoxide --locked Any conda-forge conda install -c conda-forge zoxide Any guix guix install zoxide Any Linuxbrew brew install zoxide Any nixpkgs nix-env -iA nixpkgs.zoxide Alpine Linux 3.13+ Alpine Linux Packages apk add zoxide Arch Linux Arch Linux Extra pacman -S zoxide Debian 1 Debian Packages apt install zoxide Devuan 4.0+ Devuan Packages apt install zoxide Exherbo Linux Exherbo packages cave resolve -x repository/rust cave resolve -x zoxide Fedora 32+ Fedora Packages dnf install zoxide Gentoo Gentoo Packages emerge app-shells/zoxide Manjaro pacman -S zoxide openSUSE Tumbleweed openSUSE Factory zypper install zoxide Parrot OS 1 apt install zoxide Raspbian 1 Raspbian Packages apt install zoxide Rhino Linux Pacstall Packages pacstall -I zoxide-deb Slackware 15.0+ SlackBuilds Instructions Solus Solus Packages eopkg install zoxide Ubuntu 1 Ubuntu Packages apt install zoxide Void Linux Void Linux Packages xbps-install -S zoxide macOS To install zoxide, use a package manager: Repository Instructions crates.io cargo install zoxide --locked Homebrew brew install zoxide conda-forge conda install -c conda-forge zoxide MacPorts port install zoxide nixpkgs nix-env -iA nixpkgs.zoxide Or, run this command in your terminal: curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh Windows zoxide works with PowerShell, as well as shells running in Cygwin, Git Bash, and MSYS2. The recommended way to install zoxide is via winget : winget install ajeetdsouza.zoxide Or, you can use an alternative package manager: Repository Instructions crates.io cargo install zoxide --locked Chocolatey choco install zoxide conda-forge conda install -c conda-forge zoxide Scoop scoop install zoxide If you're using Cygwin, Git Bash, or MSYS2, you can also use the install script: curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh BSD To install zoxide, use a package manager: Distribution Repository Instructions Any crates.io cargo install zoxide --locked DragonFly BSD DPorts pkg install zoxide FreeBSD FreshPorts pkg install zoxide NetBSD pkgsrc pkgin install zoxide Or, run this command in your terminal: curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash Android To install zoxide, use a package manager: Repository Instructions Termux pkg install zoxide Or, run this command in your terminal: curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash Setup zoxide on your shell To start using zoxide, add it to your shell. Bash Add this to the end of your config file (usually ~/.bashrc ): eval " $( zoxide init bash ) " Elvish Add this to the end of your config file (usually ~/.elvish/rc.elv ): eval (zoxide init elvish | slurp) Note: zoxide only supports elvish v0.18.0 and above. Fish Add this to the end of your config file (usually ~/.config/fish/config.fish ): zoxide init fish | source Nushell Add this to the end of your env file (find it by running $nu.env-path in Nushell): zoxide init nushell | save -f ~ /.zoxide.nu Now, add this to the end of your config file (find it by running $nu.config-path in Nushell): source ~ /.zoxide.nu Note: zoxide only supports Nushell v0.89.0+. PowerShell Add this to the end of your config file (find it by running echo $profile in PowerShell): Invoke-Expression ( &amp; { (zoxide init powershell | Out-String ) }) Tcsh Add this to the end of your config file (usually ~/.tcshrc ): zoxide init tcsh &gt; ~ /.zoxide.tcsh source ~ /.zoxide.tcsh Xonsh Add this to the end of your config file (usually ~/.xonshrc ): execx ($( zoxide init xonsh ), 'exec' , __xonsh__ . ctx , filename = 'zoxide' ) Zsh Add this to the end of your config file (usually ~/.zshrc ): eval " $( zoxide init zsh ) " For completions to work, the above line must be added after compinit is called. You may have to rebuild your completions cache by running rm ~/.zcompdump*; compinit . Any POSIX shell Add this to the end of your config file: eval " $( zoxide init posix --hook prompt ) " Note: Warp provides its own completions, so Space+Tab completions are not supported there. Install fzf (optional) fzf is a command-line fuzzy finder, used by zoxide for completions / interactive selection. It can be installed from here . Note: The minimum supported fzf version is v0.51.0. Import your data (optional) If you currently use any of these plugins, you may want to import your data into zoxide. The data file is auto-detected using each plugin's standard conventions. zoxide import &lt; plugin &gt; Plugin Command atuin zoxide import atuin autojump zoxide import autojump fasd zoxide import fasd z zoxide import z z.lua zoxide import z.lua zsh-z zoxide import zsh-z Configuration Flags When calling zoxide init , the following flags are available: --cmd Changes the prefix of the z and zi commands. --cmd j would change the commands to ( j , ji ). --cmd cd would replace the cd command. --hook &lt;HOOK&gt; Changes how often zoxide increments a directory's score: Hook Description none Never prompt At every shell prompt pwd (default) Whenever the directory is changed --no-cmd Prevents zoxide from defining the z and zi commands. These functions will still be available in your shell as __zoxide_z and __zoxide_zi , should you choose to redefine them. Environment variables Environment variables 2 can be used for configuration. They must be set before zoxide init is called. _ZO_DATA_DIR Specifies the directory in which the database is stored. The default value varies across OSes: OS Path Example Linux / BSD $XDG_DATA_HOME or $HOME/.local/share /home/alice/.local/share macOS $HOME/Library/Application Support /Users/Alice/Library/Application Support Windows %LOCALAPPDATA% C:\Users\Alice\AppData\Local _ZO_ECHO When set to 1, z will print the matched directory before navigating to it. _ZO_EXCLUDE_DIRS Excludes the specified directories from the database. This is provided as a list of globs , separated by OS-specific characters: OS Separator Example Linux / macOS / BSD : $HOME:$HOME/private/* Windows ; $HOME;$HOME/private/* By default, this is set to "$HOME" . _ZO_FZF_OPTS Custom options to pass to fzf during interactive selection. See man fzf for the list of options. _ZO_MAXAGE Configures the aging algorithm , which limits the maximum number of entries in the database. By default, this is set to 10000. _ZO_RESOLVE_SYMLINKS When set to 1, z will resolve symlinks before adding directories to the database. Third-party integrations Application Description Plugin aerc Email client Natively supported alfred macOS launcher alfred-zoxide clink Improved cmd.exe for Windows clink-zoxide emacs Text editor zoxide.el felix File manager Natively supported joshuto File manager Natively supported lf File manager See the wiki nnn File manager nnn-autojump ranger File manager ranger-zoxide raycast macOS launcher raycast-zoxide rfm File manager Natively supported sesh tmux session manager Natively supported telescope.nvim Fuzzy finder for Neovim telescope-zoxide tmux-session-wizard tmux session manager Natively supported tmux-sessionx tmux session manager Natively supported vim / neovim Text editor zoxide.vim xplr File manager zoxide.xplr xxh Transports shell configuration over SSH xxh-plugin-prerun-zoxide yazi File manager Natively supported zabb Finds the shortest possible query for a path Natively supported zesh zellij session manager Natively supported zsh-autocomplete Realtime completions for zsh Natively supported Footnotes Debian / Ubuntu derivatives update their packages very slowly. If you're using one of these distributions, consider using the install script instead. ↩ ↩ 2 ↩ 3 ↩ 4 If you're not sure how to set an environment variable on your shell, check out the wiki . ↩
