diff --git a/src/uu/env/src/env.rs b/src/uu/env/src/env.rs index 1801b71f3..64a2a0d14 100644 --- a/src/uu/env/src/env.rs +++ b/src/uu/env/src/env.rs @@ -388,21 +388,7 @@ impl EnvAppData { // load .env-style config file prior to those given on the command-line load_config_file(&mut opts)?; - // unset specified env vars - for name in &opts.unsets { - let native_name = NativeStr::new(name); - if name.is_empty() - || native_name.contains(&'\0').unwrap() - || native_name.contains(&'=').unwrap() - { - return Err(USimpleError::new( - 125, - format!("cannot unset {}: Invalid argument", name.quote()), - )); - } - - env::remove_var(name); - } + apply_unset_env_vars(&opts)?; apply_specified_env_vars(&opts); @@ -483,6 +469,24 @@ impl EnvAppData { } } +fn apply_unset_env_vars(opts: &Options<'_>) -> Result<(), Box> { + for name in &opts.unsets { + let native_name = NativeStr::new(name); + if name.is_empty() + || native_name.contains(&'\0').unwrap() + || native_name.contains(&'=').unwrap() + { + return Err(USimpleError::new( + 125, + format!("cannot unset {}: Invalid argument", name.quote()), + )); + } + + env::remove_var(name); + } + Ok(()) +} + fn apply_change_directory(opts: &Options<'_>) -> Result<(), Box> { if let Some(d) = opts.running_directory { match env::set_current_dir(d) {