# fish The friendly interactive shell. 1. [TL;DR](#tldr) 1. [Configuration](#configuration) 1. [Prompt](#prompt) 1. [Further readings](#further-readings) 1. [Sources](#sources) ## TL;DR ```sh # Install the shell. apt install 'fish' brew install 'fish' zypper install 'fish' # Start `fish` sessions. fish fish -Pil # Change one's default shell to `fish`. chsh -s (which fish) # from `fish` chsh -s "$(which fish)" # from `{ba,z}sh` # Open the web-based configuration interface. fish_config fish_config browse ``` ## Configuration Shell configuration file: `~/.config/fish/config.fish`.
`.fish` scripts in `~/.config/fish/conf.d/` are automatically executed **before** `config.fish`. Configuration files are read at startup of every session, whether the shell is interactive and/or login.
Use `status --is-interactive` and `status --is-login` to discriminate between interactive/login shells, respectively: ```sh if status --is-login fish_add_path ~/bin end ``` `fish` offers a web-based configuration interface. Open it executing `fish_config`. ## Prompt See [Starship] or Tide. ## Further readings - [Website] - [`bash`][bash] - [`zsh`][zsh] - [Starship] (prompt) - [Oh My Fish][oh-my-fish] ## Sources All the references in the [further readings] section, plus the following: - [Documentation] - [Github] [further readings]: #further-readings [bash]: bash.md [oh-my-fish]: https://github.com/oh-my-fish/oh-my-fish [starship]: starship.md [zsh]: zsh.md [documentation]: https://fishshell.com/docs/current/ [github]: https://github.com/fish-shell/fish-shell [website]: https://fishshell.com/