Recalculate exported variables when universal variable is erased

Fixes #2046
This commit is contained in:
ridiculousfish 2015-04-29 17:28:49 -07:00
parent 9c3a9a1e73
commit f30872a7b5
2 changed files with 8 additions and 0 deletions

View file

@ -901,6 +901,7 @@ int env_remove(const wcstring &key, int var_mode)
!(var_mode & ENV_GLOBAL) &&
!(var_mode & ENV_LOCAL))
{
bool is_exported = uvars()->get_export(key);
erased = uvars() && uvars()->remove(key);
if (erased)
{
@ -911,6 +912,9 @@ int env_remove(const wcstring &key, int var_mode)
ev.arguments.push_back(key);
event_fire(&ev);
}
if (is_exported)
mark_changed_exported();
}
react_to_variable_change(key);

View file

@ -149,6 +149,10 @@ else
end
set -Ue __fish_test_universal_variables_variable_foo
# Should no longer be in environment (#2046)
env | sgrep __fish_test_universal_variables_variable_foo
set -Ux __fish_test_universal_variables_variable_foo bar
set -U __fish_test_universal_variables_variable_foo baz
if test (/bin/sh -c 'echo $__fish_test_universal_variables_variable_foo') = baz -a (../fish -c 'echo $__fish_test_universal_variables_variable_foo') = baz