nushell/crates/nu-engine
Darren Schroeder 2846e3f5d9
enable theming of the command line syntax (#3606)
* enable theming of the command line syntax

* added missing flatshape, sorted flatshapes for easier reading.

* sorted flat shapes again and saved it this time

* added sample rwb.json syntax them file to docs
2021-06-11 14:17:43 -05:00
..
src enable theming of the command line syntax (#3606) 2021-06-11 14:17:43 -05:00
tests Rename the use of invocation to subexpression (#3568) 2021-06-07 20:08:35 +12:00
Cargo.toml Series arithmetic (#3602) 2021-06-11 09:39:51 +12:00
README.md Fix typos and capitalization of "Unicode" (#3234) 2021-04-04 07:14:07 +12:00

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 the Host. They will most likely come from std::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 the Scope. Therefore all env variables are read from the Scope and put into the external binaries environment-variables-memory area.