Fundamentals 11 min read

Unlock the Power of Fish Shell: Installation, Customization, and Advanced Features

This guide introduces Fish Shell, covering its installation on macOS, how to switch from Bash or Zsh, key features like syntax highlighting, smart auto‑completion, web‑based configuration, custom prompts, and practical code examples to help both beginners and experienced users boost their terminal productivity.

Efficient Ops
Efficient Ops
Efficient Ops
Unlock the Power of Fish Shell: Installation, Customization, and Advanced Features

Introduction

When discussing command‑line interfaces (CLI), Bash and Zsh are common, but Fish Shell stands out with a modern design and powerful features that many developers and system administrators love. It offers out‑of‑the‑box functionality, syntax highlighting, error coloring, smart suggestions, and a web‑based visual configurator.

1. Installation

On macOS, install Fish via Homebrew:

<code>brew install fish</code>

The installation path is shown in the screenshot (record it for later use).

2. Switching Shells

2.1 Manual Switch

Run

fish

to start Fish Shell.

2.2 Set as Default Shell

Append the Fish binary path to

/etc/shells

to avoid "non‑standard shell" errors, then use

chsh -s /opt/homebrew/Cellar/fish/3.6.1/bin/fish

(adjust the path as needed). To revert, run

chsh -s /bin/zsh

or

chsh -s /bin/bash

.

Note: Because Fish syntax differs significantly from Bash, it is recommended not to set Fish as the default shell for scripts.

3. Useful Features

3.1 Syntax Highlighting

Valid commands appear in blue, invalid ones in red, valid paths are underlined, and mismatched brackets or commas are highlighted.

3.2 Auto‑completion Suggestions

Fish provides gray suggestions based on history or inferred completions. Accept a suggestion with

-&gt;

, or partially accept with

Alt + -&gt;

.

3.3 Tab Completion

Press

Tab

after typing part of a command (e.g.,

git

) to list possible sub‑commands and options.

3.4 Web‑Based Configurator

Run

fish_config

to open a browser UI where you can customize themes, prompts, functions, constants, history, and key bindings.

3.5 Custom Configuration File

Fish uses

~/.config/fish/config.fish

for user configuration. You can add aliases, functions, and other settings here. Example aliases for Git commands are shown.

3.6 Easy‑to‑Read Syntax

Fish syntax resembles high‑level languages. Examples include

if

statements,

switch

,

while

,

for

loops, and function definitions.

4. Custom Prompt

Define a

fish_prompt

function in

config.fish

to display time, current directory, and Git status with colors and symbols.

5. Custom Greeting

Override the default welcome message by defining a

fish_greeting

function that prints a custom string and the current time.

Fish Shellcommand linescriptingmacOSTerminalShell Customization
Efficient Ops
Written by

Efficient Ops

This public account is maintained by Xiaotianguo and friends, regularly publishing widely-read original technical articles. We focus on operations transformation and accompany you throughout your operations career, growing together happily.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.