mirror of
https://github.com/nushell/nushell.git
synced 2025-07-01 07:00:37 +02:00
Change environment variables to be case-preserving (#12701)
This PR changes `$env` to be **case-preserving** instead of case-sensitive. That is, it preserves the case of the environment variable when it is first assigned, but subsequent retrieval and update ignores the case. Notably, both `$env.PATH` and `$env.Path` can now be used to read or set the environment variable, but child processes will always see the correct case based on the platform. Fixes #11268. --- This feature was surprising simple to implement, because most of the infrastructure to support case-insensitive cell path access already exists. The `get` command extracts data using a cell path in a case-insensitive way (!), but accepts a `--sensitive` flag. (I think this should be flipped around?)
This commit is contained in:
@ -194,3 +194,15 @@ fn env_var_not_var() {
|
||||
");
|
||||
assert!(actual.err.contains("use $env.PWD instead of $PWD"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn env_var_case_insensitive() {
|
||||
let actual = nu!("
|
||||
$env.foo = 111
|
||||
print $env.Foo
|
||||
$env.FOO = 222
|
||||
print $env.foo
|
||||
");
|
||||
assert!(actual.out.contains("111"));
|
||||
assert!(actual.out.contains("222"));
|
||||
}
|
||||
|
Reference in New Issue
Block a user