Closed
Description
Describe the bug
When we spawn child processes, we do not clear environment variables. This means it is possible for child processes to inherit environment variables that are supposed to be hidden via hide-env
.
How to reproduce
- set a environment variable in the parent shell.
$env.TEST = 1
- start a child shell with the following command string.
^$nu.current-exe -c "hide-env TEST; ^$nu.current-exe -c '$env.TEST'"
The child shell first hides the TEST
environment variable. It will not be able to use the environment variable directly. However, the child shell then spawns a grandchild shell. The grandchild is able to access the TEST
environment variable and will print 1
.
Expected behavior
An error saying that the TEST
environment variable could not be found.
Screenshots
No response
Configuration
Bug is present on 0.92.2, 0.93.0, latest main, and maybe since the beginning of time.
key | value |
---|---|
version | 0.92.2 |
branch | makepkg |
commit_hash | 2a08a18 |
build_os | linux-x86_64 |
build_target | x86_64-unknown-linux-gnu |
rust_version | rustc 1.77.1 (7cf61ebde 2024-03-27) (Arch Linux rust 1:1.77.1-2) |
cargo_version | cargo 1.77.1 |
build_time | 2024-04-11 08:40:50 +00:00 |
build_rust_channel | release |
allocator | mimalloc |
features | dataframe, default, sqlite, trash, which |
installed_plugins |
Additional context
No response