Fish Shell, how to remove the welcome message

By

Learn how to remove the Welcome to fish greeting in Fish Shell by setting fish_greeting to an empty string in your config.fish so new shells open clean.

~~~

To remove the Fish Shell welcome message, set the fish_greeting variable to an empty string in your config.fish file.

I had this “problem”.

When I opened my shells, I had these 3 lines show up every time.

It’s a Fish Shell default.

I wanted to remove them.

Before

Fish stores that message in a variable called fish_greeting. Every time an interactive shell starts, Fish prints whatever that variable contains. Set it to an empty string and there’s nothing to print.

Here’s how I did it.

I opened ~/.config/fish/config.fish

code ~/.config/fish/config.fish

Where I had this content:

if status is-interactive
    # Commands to run in interactive sessions can go here
end
fish_add_path /opt/homebrew/opt/node@16/bin

And I added set fish_greeting "" at the bottom:

if status is-interactive
    # Commands to run in interactive sessions can go here
end
fish_add_path /opt/homebrew/opt/node@16/bin

set fish_greeting ""

Here’s my prompt now:

after

Why is the message still there?

One thing to be careful with: the change only applies to new shells. config.fish runs when a shell starts, so the terminal window you edited the file in still shows the old greeting in its scrollback, and nothing changes until you open a new tab.

If you want to reload the current shell instead, run:

exec fish

That replaces the running shell with a fresh one that reads the updated config.

An alternative: a universal variable

You don’t have to edit config.fish at all. Fish has universal variables, which persist across sessions and reboots on their own. Run this once in any Fish shell:

set -U fish_greeting ""

The -U flag makes the variable universal, so Fish remembers it without any config file changes. Both approaches work, pick one. I prefer the config.fish route because all my shell setup lives in one file I can put under version control.

And if you’d rather replace the message than remove it, set the variable to your own text:

set fish_greeting "Ready to work."

New shells will greet you with that line instead.

Tagged: CLI · All topics
~~~

Related posts about cli: