As mentioned above, the OS Path variable is automatically converted by Nushell. As a result, it can be treated as a list within your startup config without needing to be present in `ENV_CONVERSIONS`. Other colon-separated paths, like `XDG_DATA_DIRS`, are not automatically converted.
:::
To add an additional conversion, [`merge`](/commands/docs/merge.md) it into the `$env.ENV_CONVERSIONS` record. For example, to add a conversion for the `XDG_DATA_DIRS` variable:
```nu
$env.ENV_CONVERSIONS = $env.ENV_CONVERSIONS | merge {
"XDG_DATA_DIRS": {
from_string: {|s| $s | split row (char esep) | path expand --no-symlink }
to_string: {|v| $v | path expand --no-symlink | str join (char esep) }
}
}
```
### `LS_COLORS`
As with many `ls`-like utilities, Nushell's directory listings make use of the `LS_COLORS` environment variable for defining styles/colors to apply to certain file types and patterns.
## Nushell Settings in the `$env.config` Record
### Changing Settings in the `$env.config` Record
The primary mechanism for changing Nushell's behavior is the `$env.config` record. While this record is accessed as an environment variable, unlike most other variables it is:
- Not inherited from the parent process. Instead, it is populated by Nushell itself with certain defaults.
- Not exported to child processes started by Nushell.
To examine the current settings in `$env.config`, just type the variable name:
```nu
$env.config
```
::: tip
Since Nushell provides so many customization options, it may be better to send this to a pager like:
```nu
$env.config | table -e | less -R
# or, if bat is installed:
$env.config | table -e | bat -p
```
:::
An appendix documenting each setting will be available soon. In the meantime, abbreviated documentation on each setting can be viewed in Nushell using:
```nu
config nu --doc | nu-highlight | bat
# or
config nu --doc | nu-highlight | less -R
```
To avoid overwriting existing settings, it's best to simply assign updated values to the desired configuration keys, rather than the entire `config` record. In other words:
::: warning Wrong
```nu
$env.config = {
show_banner: false
}
```
This would reset any _other_ settings that had been changed, since the entire record would be overwritten.
:::
::: tip Right
```nu
$env.config.show_banner = false
```
This changes _only_ the `show_banner` key/value pair, leaving all other keys with their existing values.
:::
Certain keys are themselves also records. It's okay to overwrite these records, but it's best-practice
to set all values when doing so. For example:
```nu
$env.config.history = {
file_format: sqlite
max_size: 1_000_000
sync_on_enter: true
isolation: true
}
```
### Remove Welcome Message
:::note
This section is linked directly from the banner message, so it repeats some information from above.
:::
To remove the welcome message that displays each time Nushell starts:
1. Type `config nu` to edit your configuration file.
2. If you receive an error regarding the editor not being defined:
```nu
$env.config.buffer_editor = <path to your preferred editor>
# Such as:
$env.config.buffer_editor = "code"
$env.config.buffer_editor = "vi"
# Or with editor arguments:
$env.config.buffer_editor = ["emacsclient", "-s", "light", "-t"]
```
Then repeat step 1.
3. Add the following line to the end of the file:
```nu
$env.config.show_banner = false
```
4. Save and exit your editor.
5. Restart Nushell to test the change.
## Additional Startup Configuration
### Changing default directories
::: warning Important
As discussed below, variables in this section must be set **before** Nushell is launched.
:::
Some variables that control Nushell startup file locations must be set **before** Nushell is loaded. This is often done by a parent process such as:
- The terminal application in which Nushell is run
- The operating system or window manager. When running Nushell as a login shell, this will likely be the only mechanism available.