diff options
-rw-r--r-- | src/env.rs | 17 | ||||
-rw-r--r-- | src/shell/mod.rs | 5 |
2 files changed, 13 insertions, 9 deletions
@@ -26,19 +26,13 @@ pub struct V0 { impl Env { pub fn new() -> anyhow::Result<Self> { - let mut vars: std::collections::HashMap< - std::ffi::OsString, - std::ffi::OsString, - > = std::env::vars_os().collect(); - vars.insert("SHELL".into(), std::env::current_exe()?.into()); - vars.insert("TERM".into(), "screen".into()); let pwd = std::env::current_dir()?; Ok(Self::V0(V0 { idx: 0, latest_status: std::process::ExitStatus::from_raw(0), pwd: pwd.clone(), prev_pwd: crate::mutex::new(pwd), - vars, + vars: std::env::vars_os().collect(), })) } @@ -85,7 +79,14 @@ impl Env { } } - pub fn set_var<T: Into<std::ffi::OsString>>(&mut self, k: T, v: T) { + pub fn set_var< + K: Into<std::ffi::OsString>, + V: Into<std::ffi::OsString>, + >( + &mut self, + k: K, + v: V, + ) { match self { Self::V0(env) => { env.vars.insert(k.into(), v.into()); diff --git a/src/shell/mod.rs b/src/shell/mod.rs index 0547bae..8343b0e 100644 --- a/src/shell/mod.rs +++ b/src/shell/mod.rs @@ -212,10 +212,13 @@ pub struct Shell { impl Shell { pub fn new(offset: time::UtcOffset) -> anyhow::Result<Self> { + let mut env = Env::new()?; + env.set_var("SHELL", std::env::current_exe()?); + env.set_var("TERM", "screen"); Ok(Self { readline: readline::Readline::new(), history: history::History::new(), - env: Env::new()?, + env, git: None, focus: Focus::Readline, scene: Scene::Readline, |