ajeetdsouza/zoxide · error · anyhow::Error

_ZO_DATA_DIR must be an absolute path

Error message

_ZO_DATA_DIR must be an absolute path

What it means

Error "_ZO_DATA_DIR must be an absolute path" thrown in ajeetdsouza/zoxide.

Source

Thrown at src/config.rs:18

use std::env;
use std::ffi::OsString;
use std::path::PathBuf;

use anyhow::{Context, Result, ensure};
use glob::Pattern;

use crate::db::Rank;

pub fn data_dir() -> Result<PathBuf> {
    let dir = match env::var_os("_ZO_DATA_DIR") {
        Some(path) => PathBuf::from(path),
        None => dirs::data_local_dir()
            .context("could not find data directory, please set _ZO_DATA_DIR manually")?
            .join("zoxide"),
    };

    ensure!(dir.is_absolute(), "_ZO_DATA_DIR must be an absolute path");
    Ok(dir)
}

pub fn echo() -> bool {
    env::var_os("_ZO_ECHO").is_some_and(|var| var == "1")
}

pub fn exclude_dirs() -> Result<Vec<Pattern>> {
    match env::var_os("_ZO_EXCLUDE_DIRS") {
        Some(paths) => env::split_paths(&paths)
            .map(|path| {
                let pattern = path.to_str().context("invalid unicode in _ZO_EXCLUDE_DIRS")?;
                Pattern::new(pattern)
                    .with_context(|| format!("invalid glob in _ZO_EXCLUDE_DIRS: {pattern}"))
            })
            .collect(),
        None => {
            let pattern = (|| {

View on GitHub (pinned to 8a3f76da90)

Solutions

  1. Set _ZO_DATA_DIR to an absolute path (starting with / on Unix or a drive letter on Windows)
  2. Unset _ZO_DATA_DIR to use the default data directory

When it happens

Trigger: Thrown at src/config.rs:18 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ajeetdsouza/zoxide@8a3f76da90 (2026-08-19). Data as JSON: /api/errors/d4d5d8f15af6c5b6. Report an issue: GitHub.