No, the title for this post is not a mistake. I\u2019m not referring to the gill-bearing aquatic craniate animals that lack limbs with digits or the shark-shaped magnetic Linux emblem that you might have stuck to your car. The \u201cfish\u201d I\u2019m referring to is a Linux shell and one that\u2019s been around since 2005. Even so, it\u2019s a shell that a lot of Linux users may not be familiar with.\n\nThe primary reason is that fish isn't generally installed by default. In fact, on some distributions, the repository that provides it is one your system probably doesn't access. If you type "which fish" and your system responds simply with another prompt, you might be missing out on an interesting alternative shell. And if your apt-get or yum command can't find what you're looking for, you will probably have to use commands like those shown below to get fish loaded onto your system.\nOn Ubuntu:\n$ sudo apt-add-repository ppa:fish-shell\/release-2\n$ sudo apt-get update\n$ sudo apt-get install fish\n\nThe ppa:fish-shell repository contains regular builds of the most recent source for fish, built from the Git master trunk at https:\/\/github.com\/fish-shell\/fish-shell\/.\nIn case you're not familiar with the term "PPA," it stands for "Personal Package Archive" and is a software repository for source packages.\nOn RHEL:\n$ cd \/etc\/yum.repos.d\/\n$ sudo wget https:\/\/download.opensuse.org\/repositories\/shells:fish:release:2\/RHEL_7\/shells:fish:release:2.repo\n$ sudo yum install fish\n\nWhat's different about fish?\nIf you've never have heard of \u201cfish\u201d related to Linux, you might be interested in knowing that it\u2019s a shell that some refer to as \u201cexotic.\u201d One of its claims to notoriety is that it promises to be quie a bit friendlier than the older shells, such as bash. In fact, "fish" stands for \u201cfriendly interactive shell\u201d and it promises to make it easier, especially for new Linux users, to remember and to execute commands.\nIf you install fish and set up an account to use fish as its shell, you'll notice right away that the command line prompt is a little different.\nnemo@stinkbug ~>\n\nType a letter or two and you will notice that the shell attempts to guess what you want to do, suggesting what you might be trying to type. If you press a tab key, it will begin displaying a list of commands that start with the letter(s) you've typed so far. In the display below, only the "c" in "cd" has been typed and the tab key pressed. Note how the system responds by displaying a previously entered command.\nnemo@stinkbug ~> cd .local\nc++filt (Executable link, 26kB)\nc89 (Executable link, 428B)\nc89-gcc (Executable, 428B)\nc99 (Executable link, 454B)\n... and 94 more rows\n\nPress the tab again, and another screenload of possible commands will be displayed.\nOnce the user has typed enough of a command to uniquely identify it, another press of the tab provides command completion. The user can then just press the enter key to run it.\nAnother difference between fish and more conventional shells is that fish doesn't use = signs to assign values to variables. To set up a variable, you need to use the set command.\nnemo@stinkbug ~> TODAY=`date`\nfish: Unsupported use of '='. In fish, please use 'set TODAY `date`'.\nnemo@stinkbug ~> set TODAY `date`\n\nNote that fish's disdain for the = sign doesn't extend to things like configuring aliases (e.g., alias me="whoami"). That's the business of the alias command, after all, not the shell.\nYou will also notice that the history file for this shell is buried a few directory levels in the user's home directory. You can find it using ~\/.local\/share\/fish\/fish_history\nAnother difference is that return codes from commands run in fish are not stored in $? as in bash, but in $status.\nnemo@stinkbug ~> echo hello\nhello\nnemo@stinkbug ~> echo $status\n0\n\nAs with other shells, 0 indicates success (no errors encountered). Any other value means that something went wrong.\nAnother feature of fish that users might appreciate is that it allows them to select their screen colors, change their prompts, and view functions, variables, history, and key bindings on a web page using the fish_config command.\nnemo@stinkbug ~> fish_config\n\nHow Fish is different from other shells\nThe features that differentiate fish from other shells include:\n\nAutosuggestions \u2014 Fish suggests commands (in muted gray) as you type, based on your command history and command completions\nVGA Color \u2014 Fish supports 24-bit true color\nFull scriptability \u2014 Simple and clean syntax\nWeb Based configuration \u2014 Using fish_config command for settings\nMan Page Completions \u2014 Fish generates command completion options automatically by parsing installed man pages\nSyntax highlighting \u2014 Fish uses different colors for parts of commands to help users focus on different things (e.g., commands versus arguments)\n\nLearn more about fish\nYou'll find that fish has a lot of features that make it worth investigating and may win over users who are a little intimidated by the Linux command line.\nYou can learn more about fish at fishshell.com.