forked from extern/nushell
e06df124ca
* upgrade dependencies num-bigint 0.3.1 -> 0.4.3 bigdecimal-rs 0.2.1 -> bigdecimal 0.3.0 s3hander 0.7 -> 0.7.5 bat 0.18 -> 0.18, default-features = false * upgrade arboard 1.1.0 -> 2.0.1 * in polars use comfy-table instead of prettytable-rs the last release of prettytable-rs was `0.8.0 Sep 27, 2018` and it uses `term 0.5` as a dependency * upgrade dependencies * upgrade trash -> 2.0.1 Co-authored-by: ahkrr <alexhk@protonmail.com> |
||
---|---|---|
.. | ||
src | ||
tests | ||
Cargo.toml | ||
README.md |
Nu-Engine
Nu-engine handles most of the core logic of nushell. For example, engine handles: - Passing of data between commands - Evaluating a commands return values - Loading of user configurations
Top level introduction
The following topics shall give the reader a top level understanding how various topics are handled in nushell.
How are environment variables handled?
Environment variables (or short envs) are stored in the Scope
of the EvaluationContext
. That means that environment variables are scoped by default and we don't use std::env
to store envs (but make exceptions where convenient).
Nushell handles environment variables and their lifetime the following:
- At startup all existing environment variables are read and put into
Scope
. (Nushell reads existing environment variables platform independent by asking theHost
. They will most likely come fromstd::env::*
) - Envs can also be loaded from config files. Each loaded config produces a new
ScopeFrame
with the envs of the loaded config. - Nu-Script files and internal commands read and write env variables from / to the
Scope
. External scripts and binaries can't interact with theScope
. Therefore all env variables are read from theScope
and put into the external binaries environment-variables-memory area.