mirror of
https://github.com/nushell/nushell.git
synced 2025-05-20 18:00:49 +02:00
# Description With great thanks to @fdncred and especially @PerchunPak (see #14601) for finding and fixing a number of issues that I pulled in here due to the filename changes and upcoming freeze. This PR primarily fixes a poor wording choice in the new filenames and `config` command options. The fact that these were called `sample_config.nu` (etc.) and accessed via `config --sample` created a great deal of confusion. These were never intended to be used as-is as config files, but rather as in-shell documentation. As such, I've renamed them: * `sample_config.nu` becomes `doc_config.nu` * `sample_env.nu` becomes `doc_env.nu` * `config nu --sample` becomes `config nu --doc` * `config env --sample` because `config env --doc` Also the following: * Updates `doc_config.nu` with a few additional comment-fixes on top of @PerchunPak's changes. * Adds version numbers to all files - Will need to update the version script to add some files after this PR. * Additional doc on plugin and plugin_gc configuration which I had failed to previously completely update from the older wording * Updated the comments in the `scaffold_*.nu` files to point people to `help config`/`help nu` so that, if things change in the future, it will become more difficult for the comments to be outdated. * # User-Facing Changes Mostly doc. `config nu` and `config env` changes update new behavior previously added in 0.100.1 # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` # After Submitting * Update configuration chapter of doc * Update the blog entry on migrating config * Update `bump-version.nu` |
||
---|---|---|
.. | ||
default_config.nu | ||
default_env.nu | ||
doc_config.nu | ||
doc_env.nu | ||
README.md | ||
sample_login.nu | ||
scaffold_config.nu | ||
scaffold_env.nu |
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
doc_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
doc_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 = {}
doc_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 --doc | 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 --doc
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
doc_config.nu
Counterpart to doc_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 --doc | 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 --doc
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.