diff --git a/e2e/env/test_env_path b/e2e/env/test_env_path index d13cb326a0..b68db987aa 100644 --- a/e2e/env/test_env_path +++ b/e2e/env/test_env_path @@ -14,3 +14,14 @@ _.path = ['a', 'b'] EOF assert "mise dr path" "$PWD/a $PWD/b" + +mkdir -p sub_dir +cd sub_dir +cat <<'EOF' >mise.toml +[env] +_.path = ['c', 'd'] +EOF +assert "mise dr path" "$PWD/c +$PWD/d +${PWD%/*}/a +${PWD%/*}/b" diff --git a/src/config/env_directive/mod.rs b/src/config/env_directive/mod.rs index be4f5b9a6f..55a9dd74c0 100644 --- a/src/config/env_directive/mod.rs +++ b/src/config/env_directive/mod.rs @@ -366,17 +366,18 @@ impl EnvResults { .or_else(|| dirs::CWD.clone()) .unwrap_or_default(); let paths = paths.map(|(p, _)| p).collect_vec(); - let paths = paths + let mut paths = paths .iter() .rev() .flat_map(|path| env::split_paths(path)) .map(|s| normalize_path(&config_root, s)) .collect::>(); - r.env_paths.extend(paths); + // r.env_paths is already reversed and paths should prepend r.env_paths + paths.reverse(); + paths.extend(r.env_paths); + r.env_paths = paths; } - r.env_paths.reverse(); - Ok(r) }