Skip to content

Instantly share code, notes, and snippets.

@gagarine
Last active November 10, 2024 01:21
Show Gist options
  • Save gagarine/cf3f65f9be6aa0e105b184376f765262 to your computer and use it in GitHub Desktop.
Save gagarine/cf3f65f9be6aa0e105b184376f765262 to your computer and use it in GitHub Desktop.
Install fish shell on macOS Mojave with brew

Installing Fish shell on MacOS (Intel and M1) using brew

Fish is a smart and user-friendly command line (like bash or zsh). This is how you can instal Fish on MacOS and make your default shell.

Note that you need the https://brew.sh/ package manager installed on your machine.

Install Fish

brew install fish

More info: https://fishshell.com/docs/current/tutorial.html#tut_path

Check the path

Check the fish path with which fish . In the examples below it was located at: /opt/homebrew/bin/fish On older Macs default path is /usr/local/bin/fish, replace accordingly in the instruction below.

Make fish the default shell

MacOS allow you to change your default Shell using comande line or GUI methodes https://support.apple.com/en-us/102360.

Using the terminal:

  1. check the fish path with which fish. In the examples below it was located at: /opt/homebrew/bin/fish. On older Macs the path might differ.
  2. chsh -s /opt/homebrew/bin/fish

Add brew binaries in fish path

run the command: fish_add_path /opt/homebrew/bin

Optionnal Configurations

Auto Completions

To collect command completions for all commands run:

fish_update_completions

Edit config.sh

I edited the ~/.config/fish/config.fish to have my terminal in english

set -x LANG en_US.UTF-8

Configure your shell

You can configure your shell by launching the web interface, run:

fish_config

Related documentation

@jagdishadusumalli
Copy link

macos Sonoma 14.5

  1. Add brew binaries in fish path
    echo (echo; echo 'eval "$(/usr/local/bin/brew shellenv)"') >> ~/.config/fish/config.fish

This is the conventional way/ command to add brew libs to the path in bash or zsh shell.
In fish when i executed got error "fish: command substitutions not allowed here"
adding extra echo at the begining resolves the error and adds the path to the config.fish file properly and works

@injust
Copy link

injust commented Sep 19, 2024

  1. check the fish path with which fish. In the examples below it was located at: /opt/homebrew/bin/fish. On older Macs the path might differ.
  2. Add fish to the know shells run the command: sudo sh -c 'echo /opt/homebrew/bin/fish >> /etc/shells'
  3. Restart your terminal
  4. Set fish as the default shell run the command: chsh -s /opt/homebrew/bin/fish
  5. Restart your terminal and check if it launched with fish or not

Editing /etc/shells manually is a terrible hack. Use the official method instead:

  1. Choose Apple menu  > System Settings, then click Users & Groups in the sidebar.
  2. Control-click your user name or user picture in the list of users on the right, then choose Advanced Options.
  3. Enter your user name and password when prompted.
  4. Choose a shell from the “Login shell” menu, then click OK to save the changes.

This lets you specify the path to the shell of your choice, even if it isn't in /etc/shells.

@gagarine
Copy link
Author

Thanks all, I updated the gist. (I don't use fish myself, but the gist seems quiet popular, so I feel that it needed an update :) )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment