diff --git a/env.cpp b/env.cpp index 91bc7ac80..353085b8b 100644 --- a/env.cpp +++ b/env.cpp @@ -443,7 +443,7 @@ void env_init(const struct config_paths_t *paths /* or NULL */) L"LINES", L"COLUMNS", L"PWD", - L"SHLVL", + //L"SHLVL", // will be inserted a bit lower down L"FISH_VERSION", }; for (size_t i=0; i < sizeof ro_keys / sizeof *ro_keys; i++) @@ -549,6 +549,7 @@ void env_init(const struct config_paths_t *paths /* or NULL */) } } env_set(L"SHLVL", nshlvl_str.c_str(), ENV_GLOBAL | ENV_EXPORT); + env_read_only.insert(L"SHLVL"); /* Set up the HOME variable */ if (env_get_string(L"HOME").missing_or_empty()) diff --git a/tests/test3.in b/tests/test3.in index 1bbacc0e3..56cceeb57 100644 --- a/tests/test3.in +++ b/tests/test3.in @@ -233,4 +233,8 @@ echo $testu echo Missing: $testu ../fish -c 'echo Missing: $testu' +# test SHLVL +# use a subshell to ensure a clean slate +env SHLVL= ../fish -c 'echo SHLVL: $SHLVL; ../fish -c \'echo SHLVL: $SHLVL\'' + true diff --git a/tests/test3.out b/tests/test3.out index d6cbdb9c8..50563c05b 100644 --- a/tests/test3.out +++ b/tests/test3.out @@ -21,3 +21,5 @@ Testing Universal Startup 2 Missing: Missing: +SHLVL: 1 +SHLVL: 2