diff --git a/crates/nu-cli/src/util.rs b/crates/nu-cli/src/util.rs index 031413a0b6..a79187d70c 100644 --- a/crates/nu-cli/src/util.rs +++ b/crates/nu-cli/src/util.rs @@ -220,10 +220,7 @@ pub fn eval_source( } }; - if let Err(err) = engine_state.merge_delta(delta, Some(stack), &cwd) { - let working_set = StateWorkingSet::new(engine_state); - report_error(&working_set, &err); - } + let _ = engine_state.merge_delta(delta, Some(stack), &cwd); match eval_block(engine_state, stack, &block, input, false, false) { Ok(mut pipeline_data) => { diff --git a/crates/nu-command/src/system/run_external.rs b/crates/nu-command/src/system/run_external.rs index bbce0d9f42..1decd69243 100644 --- a/crates/nu-command/src/system/run_external.rs +++ b/crates/nu-command/src/system/run_external.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; use std::io::{BufRead, BufReader, Write}; -use std::path::PathBuf; +use std::path::{Path, PathBuf}; use std::process::{Command as CommandSys, Stdio}; use std::sync::atomic::Ordering; use std::sync::mpsc; @@ -339,7 +339,10 @@ impl ExternalCommand { self.create_command(d)? }; - process.current_dir(d); + // do not try to set current directory if cwd does not exist + if Path::new(&d).exists() { + process.current_dir(d); + } process } else { return Err(ShellError::GenericError(