From 2a90cb73553f74db28dbb2cd881e464214ea4936 Mon Sep 17 00:00:00 2001 From: Rikuki IX <52599939+rikukiix@users.noreply.github.com> Date: Fri, 22 Nov 2024 05:57:33 +0800 Subject: [PATCH] Update SHLVL (only when interactive) on startup (#14404) # Description Make NuShell correctly inherit and update `SHLVL` from other shells (obviously including itself) in Unix environment. See issue #14384 # User-Facing Changes None # Tests + Formatting New code formatted. New feature works well in interactive usage. # After Submitting --- src/main.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main.rs b/src/main.rs index b7c5a6a173..2c7b94b628 100644 --- a/src/main.rs +++ b/src/main.rs @@ -280,6 +280,16 @@ fn main() -> Result<()> { Value::string(env!("CARGO_PKG_VERSION"), Span::unknown()), ); + // Add SHLVL if interactive + if engine_state.is_interactive { + let mut shlvl = engine_state + .get_env_var("SHLVL") + .map(|x| x.as_str().unwrap_or("0").parse::().unwrap_or(0)) + .unwrap_or(0); + shlvl += 1; + engine_state.add_env_var("SHLVL".to_string(), Value::int(shlvl, Span::unknown())); + } + if parsed_nu_cli_args.no_std_lib.is_none() { load_standard_library(&mut engine_state)?; }