I use Fish shell on Ubuntu and OS X for basic stuff: file manipulation, using command-line apps, and occassionally doing some light shell scripting to automate my workflow.<p>Coming from BASH this shell feels like a much-needed update! Instead of worrying to make sure my terminal has all of these feature and then having a different experience in each terminal app - now All of the features are in shell not the terminal and I can connect anywhere, from any device, and enjoy the same setup.<p>The only two downsides are actually the same downside: its not compatible with BASH's shell scripting, which means you often cant just run shell scripts written by others, you may have to reformat it a little first. Same if true for how you format aliases and a few other shell-related stuff you put in your options file. It will still all work, but unless it's been ported to Fish's syntax it may need to be updated or rewritten.<p>This means that all of my scripted automation I have done is Fish-specific for now and wont run in regular BASH.
I use fish exclusively and swear by it. I switched to zsh some years ago and enabled fish emulation, but it was slower, and I realized all I was doing was using fish by proxy, so I switched back to fish.<p>It's fantastic, I urge everyone to give it a try. Pretty much the only valid complaint I see here is from people who have bash code that needs to be sourced to run. I definitely think that it's worth rewriting some code to switch to a much superior shell, though.
Fish shell is awesome. But yes, compatibility of sourced functions was a bit of a problem for me. After about a year with it, I switched back to zsh. With a couple plugins I was able to get much of the fish features out it, while keeping the bash compatibility. Here is how I do it.<p>Install oh-my-zsh, and enable I couple plugins. Here's what I have in my config:
plugins=(git history-substring-search zsh-syntax-highlighting docker sudo)<p>In terms of 'enjoying the same setup on all devices', I use dropbox (or owncloud), to sync my config. All I have to do is add this at the bottom of my .zshrc file:
source ~/Dropbox/global.zshrc<p>My last tip about directory jumping, for keedot, is there are methods that will do this for you. I use fasd (<a href="https://github.com/clvv/fasd" rel="nofollow">https://github.com/clvv/fasd</a>) which you can add to your shell and will remember the directories you use often so you dont have to make special cases for specific ones. Check out the 'z' command. It has been amazingly useful.
My main gripe with a shell like Fish is that it won't work with the trusted ol' BASH scripts. Seeing as I deal with quite some BASH scripts on a day-to-day basis at work this keeps me from trying it out, even though I'd love to be able to use something more sophisticated/evolved than plain BASH.
Fish is probably my favorite shell after having worked with csh, bash, and zsh. But I have to use RVM at work, and it's a real bummer that RVM and Fish don't play nice with each other. I know rbenv works great with Fish, but I'm stuck with RVM at work. So using zsh as a second choice for now.
How does it compare to zsh (more specialy the package o-my-zsh)? The only thing that catch my eyes was the shell command being completed automatically in grey in the background. That will be great to have this in zsh.
I've been using fish shell on osx for the last 3 years. It's fun and puts ctrl-r in front of my typing without being obtrusive. I'm glad to see it here.
I'd like to use Fish more, but my biggest worry is that many tools don't come with instructions or support for Fish. I think that means you have to be committed to learning a lot about Fish, or use two shells?