mirror of
https://github.com/nushell/nushell.git
synced 2025-05-28 14:07:08 +02:00
# Description A slower, gentler alternative to #14531, in that we're just moving one setting *out* of `default_env.nu` in this PR ;-). All this does is transition from using `$env.NU_LIB_DIRS` in the startup config to `const $NU_LIB_DIRS`. Also updates the `sample_env.nu` to reflect the changes. Details: Before: `$env.NU_LIB_DIRS` was unnecessary set both in `main()` and in `default_env.nu` After: `$env.NU_LIB_DIRS` is only set in `main()` Before: `$env.NU_LIB_DIRS` was set to `config-dir/scripts` and `data-dir/completions` After: `$env.NU_LIB_DIRS` is set to an empty list, and `const NU_LIB_DIRS` is set to the directories above Before: Using `--include-path (-I)` would set the `$env.NU_LIB_DIRS` After: Using `--include-path (-I)` sets the constant `$NU_LIB_DIRS` # User-Facing Changes There shouldn't be any breaking changes here. The `$env.NU_LIBS_DIRS` still works for most cases. There are a few areas we need to clean-up to make sure that the const is usable (`nu-check`, et. al.) but they will still work in the meantime with the older `$env` version. # Tests + Formatting * Changed the Type-check on the `$env` version. * Added a type check for the const version. - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` # After Submitting Doc updates
Nushell configuration files
default_env.nu
:
- The internal default environment variables (other than
$env.config
) that will be set during Nushell startup. - Is loaded before the user's
env.nu
. - Will be loaded during any startup where the user's
env.nu
is also loaded. For example:- During normal startup with
nu
- During a startup where the user specifies an alternative
env.nu
vianu --env-config <path>
- During a
nu -c <commandstring>
ornu <script>
startup so thatENV_CONVERSIONS
is properly handled for Windows.
- During normal startup with
- Is not loaded when running with an explicit
no --no-config-file (-n)
. - Is not commented - Comments are in
sample_env.nu
. - Should be optimized for fastest load times.
- Can be introspected via
config env --default | nu-highlight
default_config.nu
:
Counterpart to default_env.nu
.
- Contains any
$env.config
values that are not set via Rust defaults. - Is loaded after the user's
env.nu
. - Is loaded before the user's
config.nu
. - Will be loaded during any startup where the user's
config.nu
is also loaded. For example:- During normal startup with
nu
- During a startup where the user specifies an alternative
config.nu
vianu --config <path>
- During normal startup with
- Likewise, is never loaded during a startup where the user's
config.nu
would not be loaded. For example:nu -n/--no-config
nu -c "ls"
nu <script.nu>
- Is not commented - Comments are in
sample_config.nu
. - Should be optimized for fastest load times. Whenever possible, values should be set via nu-protocol::config
- Exception:
color_config
values are currently set in this file so that user's can introspect the values - TODO: Implement defaults for
color_config
in nu-protocol::config and remove fromdefault_config.nu
- Exception:
- Can be introspected via
config nu --default | nu-highlight
- An ideal
default_config.nu
(when all values are set vianu-protocol::config
) will simply be:$env.config = {}
sample_env.nu
- A commented file documenting the most common environment variables that a user might configure in
env.nu
- For convenient in-shell access - Can be pretty-printed via
config env --sample | nu-highlight
- Since this file is for documentation only, include actual Nushell code without comments so that it can be pretty-printed
- No optimization necessary - Not intended for use other than documentation.
- Consider replacing
config env --sample
withhelp env.nu
at some point. - Uses a mix of default values (explained) as well as other examples that users might want in their own
env.nu
sample_config.nu
Counterpart to sample_env.nu
.
- A commented file documenting the most common environment variables that a user might configure in
config.nu
- For convenient in-shell access - Can be pretty-printed via
config nu --sample | nu-highlight
- Since this file is for documentation only, include actual Nushell code without comments so that it can be pretty-printed
- No optimization necessary - Not intended for use other than documentation.
- Consider replacing
config nu --sample
withhelp config.nu
at some point. - Uses a mix of default values (explained) as well as other examples that users might want in their own
config.nu
scaffold_env.nu
- This file is used one-time (typically) at first startup
- If the
$nu.default-config-path
directory does not exist, the directory is created and then bothscaffold_env.nu
andscaffold_config.nu
are written to it - Contains only commented lines explaining the purpose of the file to the user, along with information on the
config env
command.
scaffold_config.nu
Counterpart to scaffold_env.nu
.
- This file is used one-time (typically) at first startup
- If the
$nu.default-config-path
directory does not exist, the directory is created and then bothscaffold_env.nu
andscaffold_config.nu
are written to it - Contains only commented lines explaining the purpose of the file to the user, along with information on the
config nu
command.
sample_login.nu
This file is not used by any Nushell code. Of course, if the user has a login.nu
, then it will be evaluated during startup of a login shell.