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.
For example, on Windows, you can set environment variables through the Control Panel. Choose the Start Menu and search for _"environment variables"_.
On Linux systems using PAM, `/etc/environment` (and other system-specific mechanisms) can be used.
- A parent shell. For example, exporting the value from `bash` before running `nu`.
### Startup Variables
The variables that affect Nushell file locations are:
- `$env.XDG_CONFIG_HOME`: If this environment variable is set, it is used to change the directory that Nushell searches for its configuration files such as `env.nu`, `config.nu`, `login.nu`, and the `<config>/autoload` directory. The history and plugin files are also stored in this directory by default.
Once Nushell starts, this value is stored in the `$nu.default-config-dir` constant. See [Using Constants](#using-constants) below.
- `$env.XDG_DATA_HOME`: If this environment variable is set, Nushell sets the `$nu.data-dir` constant to this value. The `data-dir` is used in several startup tasks:
- `($nu.data-dir)/nushell/completions` is added to the `$env.NU_LIB_DIRS` search path.
- `($nu.data-dir)/vendor/autoload` is added as the last path in `nu.vendor-autoload-dirs`. Files in this directory will be read after the other vendor-auto-load directories, thus overriding any of their settings.
Note that the directory represented by `$nu.data-dir`, nor any of its subdirectories, are created by default. Creation and use of these directories is up to the user.
- `$env.XDG_DATA_DIRS` _(Unix Platforms Only)_: If this environment variable is set, it is used to populate the `$nu.vendor-auto-load` directories in the order listed. The first directory in the list is processed first, meaning the last one read will have the ability to override previous definitions.
::: warning
The `XDG_*` variables are **not** Nushell-specific and should not be set to a directory with only Nushell files. Instead, set the environment variable to the directory _above_ the one with the `nushell` directory.
For example, if you set `$env.XDG_CONFIG_HOME` to:
```
/users/username/dotfiles/nushell
```
... Nushell will look for config files in `/Users/username/dotfiles/nushell/nushell`. The proper setting would be:
```
/users/username/dotfiles
```
Also keep in mind that if the system has already set `XDG` variables, then there may already be files in use in those directories. Changing the location may require that you move other application's files to the new directory.
:::
::: tip
You can easily test out config changes in a "fresh" environment using the following recipe. The following is run from inside Nushell, but can be
adapted to other shells as well:
```nu
# Create an empty temporary directory
let temp_home = (mktemp -d)
# Set the configuration path to this directory
$env.XDG_CONFIG_HOME = $temp_home
# Set the data-dir to this directory
$env.XDG_DATA_HOME = $temp_home
# Remove other potential autoload directories