Updated: December 5th, 2019
Fish comes with useful features out of the box. For example, excellent auto-completion and syntax highlighting make my life easier. Fish is a joy to use.
What Is a Shell?
A shell is software that provides an interface for an operating system’s users to provide access to the kernel’s services.
On Unix-based or Linux-based operating systems, a shell can be invoked through the shell command in the command line interface (CLI), allowing users to direct operations through computer commands, text or script.
Shells also exist for programming languages, providing them with autonomy from the operating system and allowing cross-platform compatibility.
Installation For Arch Linux
I recommend using fish as the interactive shell. This method is less disruptive, as it doesn’t eliminate the standard bash shell completely.
Install fish with
pacman -S fish.
~/.bashrc to drop into fish. Add this line:
When you open your terminal, it will automatically drop into fish.
Installation For Other Systems
Install a Package Manager
- Fisher - Minimal, fast and reliable package manager.
- Fundle - config.fish-based package manager inspired by vundle.
- Oh My Fish! - Shell configuration framework and package manager all-in-one.
I prefer Fisher, as it offers everything I need from a package manager.
Plugins I Like
Fish works sufficiently without any plugins. That said, I installed some utilities for convenience.
l is a minimalist prompt that offers essential information like the current git branch, but not much else.
fisher add oh-my-fish/theme-l
bax allows you to run bash scripts in fish. Fish is not POSIX-compatible. That means, that some commands don’t translate 1-to-1 to fish.
With bax, you can run normal bash commands by prepending the command with
fisher add jorgebucaran/fish-bax
Use it like that:
bax "source ~/.nvm/nvm.sh --no-use; nvm use latest".
Utility functions to start the ssh agent. I can highly recommend installing fish-ssh-agent.
fisher add danhper/fish-ssh-agent
gitnow is a wrapper around git.
fisher add firstname.lastname@example.org
Easily jump between your favorite directories from everywhere with pj:
fisher add oh-my-fish/plugin-pj
Then set your project folders:
set -U PROJECT_PATHS ~/Coding/Projects ~/home
With plugin-license you can quickly create a license for your project.
fisher add oh-my-fish/plugin-license
Now create a license:
license mit >> LICENSE.txt
Move to the parent folder with ease using the plugin upto:
fisher add markcial/upto
z tracks your most used directories.
fisher add jethrokuan/z
z foo goes to the directory best matching