summaryrefslogtreecommitdiffstats
path: root/src/env.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2022-01-16 22:50:22 -0500
committerJesse Luehrs <doy@tozt.net>2022-01-16 22:50:22 -0500
commita537464a915aea2e38c62df041996b8525367bde (patch)
tree37f7a13167d1ea4f655c3a695c662abd0febe525 /src/env.rs
parentb66e1f99c30625988ec489f278e449a840bb3754 (diff)
downloadnbsh-a537464a915aea2e38c62df041996b8525367bde.tar.gz
nbsh-a537464a915aea2e38c62df041996b8525367bde.zip
move default environment variable setting to shell initialization
Diffstat (limited to 'src/env.rs')
-rw-r--r--src/env.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/env.rs b/src/env.rs
index bf6cb6c..981d8fc 100644
--- a/src/env.rs
+++ b/src/env.rs
@@ -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());