# session.settings.Session.environment

- **Module:** session.settings.Session
- **Package:** libtmux
- **Language:** Rust
- **Kind:** method
- **Source:** https://github.com/libtmux/libtmux-rs/blob/8a648c0894dfffc9303583f753b6c8ae01f2fe76/crates/libtmux/src/session/settings.rs#L367
- **Page:** https://libtmux.org/reference/rs/session-settings-session-environment/

```
session.settings.Session.environment(self, name: &str) -> Result<Option<EnvironmentEntry>, Error>
```

Read one variable from the session's environment.

tmux keeps two different things under a name: a value, and a mark
saying a process started here must not inherit the name at all.
[`EnvironmentEntry`] keeps them apart, because collapsing both to
absence would hide the second, which a caller sets deliberately with
[`Self::hide_environment`].

`None` means tmux holds nothing under the name.

# Errors

Returns an error when tmux cannot be reached.

## Example

```rust
use libtmux::EnvironmentEntry;

let guard = libtmux::test::TestServer::new().await?;
let session = guard.server().new_session("read").await?;

assert_eq!(session.environment("EDITOR").await?, None);

session.set_environment("EDITOR", "hx").await?;
assert!(matches!(
    session.environment("EDITOR").await?,
    Some(EnvironmentEntry::Set(value)) if value.as_bytes() == b"hx",
));

session.hide_environment("EDITOR").await?;
assert_eq!(
    session.environment("EDITOR").await?,
    Some(EnvironmentEntry::Removed),
);

guard.shutdown().await?;
```
