Remove std::env::set_current_dir() call from EngineState::merge_env() (#12922)

As discussed in https://github.com/nushell/nushell/pull/12749, we no
longer need to call `std::env::set_current_dir()` to sync `$env.PWD`
with the actual working directory. This PR removes the call from
`EngineState::merge_env()`.
This commit is contained in:
YizhePKU
2024-05-23 00:58:27 +08:00
committed by GitHub
parent 75689ec98a
commit 7ede90cba5
10 changed files with 41 additions and 83 deletions

View File

@ -164,15 +164,8 @@ pub(crate) fn read_default_env_file(engine_state: &mut EngineState, stack: &mut
);
// Merge the environment in case env vars changed in the config
match engine_state.cwd(Some(stack)) {
Ok(cwd) => {
if let Err(e) = engine_state.merge_env(stack, cwd) {
report_error_new(engine_state, &e);
}
}
Err(e) => {
report_error_new(engine_state, &e);
}
if let Err(e) = engine_state.merge_env(stack) {
report_error_new(engine_state, &e);
}
}
@ -202,15 +195,8 @@ fn eval_default_config(
);
// Merge the environment in case env vars changed in the config
match engine_state.cwd(Some(stack)) {
Ok(cwd) => {
if let Err(e) = engine_state.merge_env(stack, cwd) {
report_error_new(engine_state, &e);
}
}
Err(e) => {
report_error_new(engine_state, &e);
}
if let Err(e) = engine_state.merge_env(stack) {
report_error_new(engine_state, &e);
}
}

View File

@ -250,13 +250,9 @@ pub fn nu_repl() {
for (i, line) in source_lines.iter().enumerate() {
let mut stack = Stack::with_parent(top_stack.clone());
let cwd = engine_state
.cwd(Some(&stack))
.unwrap_or_else(|err| outcome_err(&engine_state, &err));
// Before doing anything, merge the environment from the previous REPL iteration into the
// permanent state.
if let Err(err) = engine_state.merge_env(&mut stack, &cwd) {
if let Err(err) = engine_state.merge_env(&mut stack) {
outcome_err(&engine_state, &err);
}