diff --git a/src/libcmd/repl.cc b/src/libcmd/repl.cc index 6859e5c07..b14f43ec4 100644 --- a/src/libcmd/repl.cc +++ b/src/libcmd/repl.cc @@ -901,8 +901,8 @@ void runRepl( repl->initEnv(); + // add 'extra' vars. std::set names; - for (auto & [name, value] : extraEnv) { // names.insert(ANSI_BOLD + name + ANSI_NORMAL); names.insert(name); @@ -951,6 +951,7 @@ struct CmdRepl : StoreCommand, MixEvalArgs auto repl = std::make_unique(evalState); repl->autoArgs = getAutoArgs(*repl->state); + repl->initEnv(); repl->mainLoop(files); } }; diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 377e1b2f8..d99e73471 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -715,8 +715,9 @@ void mapStaticEnvBindings(const StaticEnv &se, const Env &env, valmap & vm) { // add bindings for the next level up first, so that the bindings for this level // override the higher levels. + // The top level bindings (builtins) are skipped since they are added for us by initEnv() if (env.up && se.up) { - mapStaticEnvBindings( *se.up, *env.up,vm); + mapStaticEnvBindings(*se.up, *env.up,vm); // iterate through staticenv bindings and add them. auto map = valmap(); @@ -725,23 +726,6 @@ void mapStaticEnvBindings(const StaticEnv &se, const Env &env, valmap & vm) map[iter->first] = env.values[iter->second]; } - vm.merge(map); - } - else - { - std::cout << " -------------------- " << std::endl; - // iterate through staticenv bindings and add them, - // except for the __* ones. - auto map = valmap(); - for (auto iter = se.vars.begin(); iter != se.vars.end(); ++iter) - { - std::cout << iter->first << std::endl; - std::string s = iter->first; - if (s.substr(0,2) != "__") { - map[iter->first] = env.values[iter->second]; - } - } - vm.merge(map); } }