# Set Up
After you [installed](./install.md) lacy, you have to add it's shell configuration to your shell.
## Shell Setup
For more shell options, see `lacy init --help`.
### Zsh
```bash
# ~/.zshrc
eval "$(lacy init zsh)"
```
### Bash
```bash
# ~/.bashrc
eval "$(lacy init bash)"
```
### Fish
```bash
# ~/.config/fish/config.fish
lacy init fish | source
```
### Nushell
<!-- Remove this in like 2027 when everyone gets v0.113+ -->
If you're running anything older than v0.112, you'll need `lacy init nu --cd-cmd=cd`.
If you're running anything older than v0.113, you'll also need a small hack to set lacy alias (`--cmd`) to `cd`. Check [`--cmd`](#--cmd).
```bash
# $nu.config-path
mkdir ($nu.data-dir | path join "vendor/autoload")
lacy init nu | save -f ($nu.data-dir | path join "vendor/autoload/lacy.nu")
```
### PowerShell
```powershell
# $PROFILE
### Other shells
Feel free to contribute the init script for your preferred shell.
## Shell Options
You can customize the shell script that gets generated by using these options:
### `--cd-cmd`
Define the command to be used instead of `cd`. (e.g. `--cd-cmd=z`)
Default:
- Bash, ZSH, Fish: `builtin cd`
- Nushell: `%cd`
- PowerShell: `Set-Location`
### `--cmd`
The name of the main lacy command you use for navigating. (e.g. `--cmd=cd`)
Default: `y`
> [!WARNING]
> Even though nushell has an analogue of `builtin` keyword - which is the `%` sigil,
> it was only added recently in v0.112 (and will break older versions!),
> and it was actually bugged to the point that `--cmd=cd` would still have
> caused infinite recursion, and that only got fixed in v0.113.
>
> So if you're running older versions, use this hack from the very
> [nushell book](https://www.nushell.sh/book/aliases.html#replacing-existing-commands-using-aliases):
> ```bash
> alias core-cd = cd
> mkdir ($nu.data-dir | path join "vendor/autoload")
> lacy init nu --cd-cmd=core-cd --cmd=cd | save -f ($nu.data-dir | path join "vendor/autoload/lacy.nu")
> ```
### `--custom-fuzzy`
Configure this to disable lacy's built in UI selector and replace it with your own command. (e.g. `--custom-fuzzy=fzf`)
Default: *none*