Skip to main content

Install Fish Shell on Mac OS X and Ubuntu

Install Fish Shell on Mac OS X and Ubuntu

The Fish shell goes where few command-line shells have gone before, shedding its forebearers’ POSIX baggage in favor of simplicity, consistency, and ease-of-use. Much like the Mac creators thought computers should be made to understand how humans work (and not the other way around), Fish observes your past behavior and suggests commands that it thinks you might be trying to execute. Sometimes, those suggestions are so spot-on that it can be downright spooky. Reactions of “How did Fish know that’s what I wanted to do?” are not uncommon.
In this article, we’re going to show how to install the Fish shell on Mac OS X and Ubuntu, followed by some basic setup steps. Subsequent posts will cover more advanced configuration.
So can a command-line shell be Mac-like? Let’s find out.

What is Fish and why would someone use it instead of another shell?

Fish has a number of advantages over other shells:
  • Fish suggests commands as you type based on history and completions, just like a web browser’s search bar
  • Fish generates completions automatically by parsing your installed man pages
  • Fish has a more intuitive syntax
  • Fish has less historical baggage and technical debt
For additional background information, read:

Installing Fish on Mac OS X 10.10 Yosemite

There are several ways to install Fish on Mac OS X:
  • traditional .pkg installer
  • standalone Mac application
  • Homebrew
  • manual compilation
The first two options are available from the Fish web site and are straightforward enough to be considered self-explanatory.
That said, if you already use Homebrew (which I recommend) and have configured your environment as noted in the Mac OS X Setup Guide, then you can install Fish as you would any other package:
brew install fish
If you would prefer to install the latest bleeding-edge version of Fish via Homebrew, run the following instead of the above command:
brew install --HEAD fish
Once installation has completed, add Fish to /etc/shells, which will require an administrative password:
echo "/usr/local/bin/fish" | sudo tee -a /etc/shells
To make Fish your default shell:
chsh -s /usr/local/bin/fish
Now that Fish is installed, you can proceed to the Basic Configuration section below.

Install latest Fish on Mac OS X from source

If you want to use the latest bleeding-edge version of Fish and already have Xcode installed, use the following steps to install from source:
git clone https://github.com/fish-shell/fish-shell ~/src/fish
cd ~/src/fish
xcodebuild install
ditto /tmp/fish.dst /
Add Fish to /etc/shells, which will require an administrative password:
echo "/usr/local/bin/fish" | sudo tee -a /etc/shells
Make Fish your default shell:
chsh -s /usr/local/bin/fish
Now that Fish is installed, you can proceed to the Basic Configuration section below.

Installing Fish on Ubuntu

On Ubuntu, the easiest way to keep up-to-date is via the offical PPA. If you prefer to install via .deb package, or if you want to install the bleeding-edge version of Fish from source, those instructions are further below.

Install Fish via PPA

The following steps will add the Fish 2.x PPA repository and install Fish:
sudo apt-add-repository ppa:fish-shell/release-2
sudo apt-get update
sudo apt-get install fish
Make Fish your default shell:
chsh -s /usr/bin/fish
Now that Fish is installed, you can proceed to the Basic Configuration section below.

Install Fish on Ubuntu via .deb

The following steps are for the 64-bit version of Ubuntu 14.04 LTS (“Trusty”). If you are using a different version of Ubuntu, you’ll need to retrieve an appropriate .deb package from LaunchPad.
First retrieve and then install the .deb package:
wget https://launchpad.net/~fish-shell/+archive/ubuntu/release-2/+files/fish_2.2.0-1%7Etrusty_amd64.deb
sudo dpkg -i fish_2.2.0-1~trusty_amd64.deb
Make Fish your default shell:
chsh -s /usr/bin/fish
Now that Fish is installed, you can proceed to the Basic Configuration section below.

Install bleeding-edge Fish via PPA

If you prefer, you can keep up-to-date with the bleeding-edge version of Fish via the nightly build PPA. To do so, add the nightly PPA and install Fish:
sudo add-apt-repository ppa:fish-shell/nightly-master
sudo apt-get update
sudo apt-get install fish
Make Fish your default shell:
chsh -s /usr/bin/fish
Now that Fish is installed, you can proceed to the Basic Configuration section below.

Install Fish on Ubuntu from source

Install dependencies:
sudo aptitude install build-essential git autoconf libncurses5-dev libncursesw5-dev gettext
Retrieve source, compile, and install:
mkdir -p ~/src
git clone https://github.com/fish-shell/fish-shell ~/src/fish
cd ~/src/fish
autoconf
./configure --without-xsel
make
sudo make install
Add Fish to /etc/shells:
echo "/usr/local/bin/fish" | sudo tee -a /etc/shells
Make Fish your default shell:
chsh -s /usr/local/bin/fish
Now that Fish is installed, it’s time for some basic configuration.

Basic configuration

The Fish shell should now be installed, but a bit more configuration will prove helpful later.
Create the Fish config directory:
mkdir -p ~/.config/fish
Create initial config file:
vim ~/.config/fish/config.fish
Initial config file contents, which adds /usr/local/bin to the PATH environment variable:
set -g -x PATH /usr/local/bin $PATH
Open a new terminal session, which should now load the Fish shell by default for the first time. You can enter help, followed by the return key, to load user documentation in your default browser.
You can also see your current configuration in your default browser by first entering this command:
fish_config
… and then visiting http://localhost:8000/ in your browser of choice.
Fish can parse your installed man pages and automatically generate completion files for your command-line tools. You should periodically run the following command to update those completions, which are stored in ~/.config/fish/completions by default:
fish_update_completions
Last but not least, running:
echo "set -g -x fish_greeting ''" >> ~/.config/fish/config.fish
… will eliminate the Fish welcome message that appears by default. If you want to add your own custom welcome message instead of removing the message entirely, insert your preferred text inside the '' marks.

Getting back to Bash

If you want to temporarily switch to the Bash shell for a single session, run:
bash
When you are done with your Bash session, type exit to return to your Fish shell.
If you decide Fish isn’t for you and want to permanently revert your default shell back to Bash:
chsh -s /bin/bash
… will switch your default shell to Bash.

Taking it to the next level

With Fish as your default shell, you may find that customizations you’ve made to your Bash environment are not present in Fish. The good news is that it’s easy to re-create those customizations — and create new enhancements — via Tacklebox, which allows you to easily use community-curated modules, plugins, and themes so you don’t have to create them yourself.
I look forward to continuing the conversation on Twitter.

Popular posts from this blog

Hidden Wiki

Welcome to The Hidden WikiNew hidden wiki url 2015 http://zqktlwi4fecvo6ri.onion Add it to bookmarks and spread it!!!
Editor's picks Bored? Pick a random page from the article index and replace one of these slots with it.
The Matrix - Very nice to read. How to Exit the Matrix - Learn how to Protect yourself and your rights, online and off. Verifying PGP signatures - A short and simple how-to guide. In Praise Of Hawala - Anonymous informal value transfer system. Volunteer Here are five different things that you can help us out with.
Plunder other hidden service lists for links and place them here! File the SnapBBSIndex links wherever they go. Set external links to HTTPS where available, good certificate, and same content. Care to start recording onionland's history? Check out Onionland's Museum Perform Dead Services Duties. Introduction PointsAhmia.fi - Clearnet search engine for Tor Hidden Services (allows you to add new sites to its database). DuckDuckGo - A Hidden S…

[SOLVED] IDM WAS REGISTERED WITH A FAKE SERIAL NUMBER

[SOLVED] IDM WAS REGISTERED WITH A FAKE SERIAL NUMBER
Good News [May 08, 2015]: IDM developers got smarter, but the crackers are always a step ahead. Follow this article and send an email to uglyduckblog@gmail.com if you are desperate. I can NOT post any crack here for legal reasons. Happy Downloading with IDM. ;) *********** first tip is to use latest crack for idm from  onhax.net idm universal web crack and make sure u are using all latest vers I am sure many of us are too much dependent on Internet Download Manager a.k.a. IDM. The main reason didn’t permanently switch to linux was IDM. I mainly use it for batch downloading and download streaming videos. Till yesterday, IDM was working fine with me (of course with fake serial numbers, keygen, crack, patch etc. which could be found with little effort). But few days ago, with the latest update version 6.18 build 7 (released on Nov 09, 2013) Internet Download Manager was literally had a breakthrough and crushed all the serial numbers, …

Mouse, touchpad, and keyboard problems in Windows

Mouse, touchpad, and keyboard problems in Windows Introduction This tutorial is designed to help you identify and fix common mouse, touchpad, and keyboard problems in Windows. It doesn't cover device problems related to specific programs. Mouse, touchpad, and keyboard problems can have a number of causes: Cables that aren't connected properly Incorrect device settings Missing updates Corrupted or incompatible drivers Hardware problems Check hardware Many mouse, touchpad, and keyboard problems are caused by hardware that isn't set up properly. Here's some information about how to check your device, make sure cables are connected properly, make sure the hardware has power, and check the settings. Make sure cables are connected properly Check that all cables are plugged in to the correct locations. This can include mouse and keyboard, PS2 and USB cables, and, in some cases, external USB touchpad cables. Disconnect USB cables and wait for a short time for the device drive…