🐟 Fish rocks. I've been using it exclusively for the last year, and I can't imagine giving it up.<p>There seem to be a number of misconceptions, which I will endeavor to address. The first is: "Fish isn't POSIX/bash-compliant, so there are compatibility problems." POSIX non-compliance is a feature, not a disadvantage, of the fish shell. It means there is less legacy baggage and syntactical inconsistency. I can count the number of POSIX/bash compliance-related issues I've had with fish on one hand, all of which were easily dealt with. For example, Vim assumes that your shell is <i>sh</i> compatible, but adding <i>set shell=sh</i> in your .vimrc solves that. The only other significant one for me was virtualenvwrapper, which doesn't support fish. Not a problem: Virtualfish solves that handily: <a href="https://github.com/adambrenecki/virtualfish" rel="nofollow">https://github.com/adambrenecki/virtualfish</a><p>Want to run a bash script? Just run <i>bash fooshnizzle.sh</i>. Want to switch to bash for a moment? Run <i>bash</i> and then <i>exit</i> when you want to switch back to fish. This POSIX-compatibility topic is, in my opinion, much ado about nothing.<p>Another misunderstanding seems to be, "I can do XYZ in bash, but fish doesn't support that." Fish purposefully limits the number of "builtins" -- commands that fish includes by default -- in order to maintain simplicity. For me, that's a feature. When I find that there's something I want to be easier to do in fish, I whip up a tiny function to do it. Not only is that extremely easy to do in fish, but then that command performs precisely the way <i>I</i> want it to. I haven't pushed many of those to my dotfile repository yet, but you can check out some of my fish functions there: <a href="https://github.com/justinmayer/dotfiles/tree/master/fish" rel="nofollow">https://github.com/justinmayer/dotfiles/tree/master/fish</a><p>Fish is fast, the auto-completion is amazingly helpful, and it's intuitive to use without too much configuration. Give it a try. 🐟
I've been a zsh user for a long time and I have to say that fish is great! Its super fast and starts almost instantaneously. On zsh, I would always use fasd[0] to help jump directories, but on fish I dont feel the need. The auto-completion is just fantastic. If I were you, I'd give it a try just for the awesome tab completions.
For the 'oh-my-zsh' lovers out there, there's 'oh-my-fish' as well - <a href="https://github.com/bpinto/oh-my-fish" rel="nofollow">https://github.com/bpinto/oh-my-fish</a><p>[0] - <a href="https://github.com/clvv/fasd" rel="nofollow">https://github.com/clvv/fasd</a>
Are there still compatibility issues with using fish 2.0 as your default shell? The Arch Wiki [0] advises against it because it's non bash compliant.<p>I'm going to give it a go regardless but wanted to know if there were pitfalls and what people have done to alleviate them.<p>[0] <a href="https://wiki.archlinux.org/index.php/Fish#Troubleshooting" rel="nofollow">https://wiki.archlinux.org/index.php/Fish#Troubleshooting</a>
The documentation needs a lot of work. Every 'help' command I've tried just pops up a web page using xdg-open, which (a) won't work well in a headless SSH session, never mind a plane, and (b) doesn't make it easy to search for specifics.<p>I also don't like the implementation of the prompt text as a function. It's the first thing I wanted to customize, and it looks like I need to copy and paste the existing definition of fish_prompt and hack it into shape. There's no built-in equivalent of \$, so you need to find out if you're root and do it yourself. And the existing check just does it with a string compare of $USER with 'root', rather than euid==0.<p>Hacking preferences in like this isn't a problem to begin with. The real problem comes down the road, when the defaults change and improve, and you now have to be concerned with merging your customizations with the new and improved stuff.
Why is no one putting in any time to replace the Windows shell (cmd.exe)? The stock offering is abysmal and Cygwin isn't much better. We could really use something with a bit of panache like this... Hmmm..
How long does it take for something to show up in brew? I see that Fish has a pull request issued a five hours ago, but I see quite a number of other items have pull requests going back months.
IF YOU READ THIS, YOU MUST TRY fish NOW!!!<p>Really, this 100x better than bash.<p><pre><code> 1. download and install[0]
2. read the tutorial[1]
3. ...
4. profit
</code></pre>
[0]: <a href="http://fishshell.com/#platform_tabs" rel="nofollow">http://fishshell.com/#platform_tabs</a><p>[1]: <a href="http://fishshell.com/tutorial.html" rel="nofollow">http://fishshell.com/tutorial.html</a>
I've tried fish a few years ago and wasn't all that impressed with the features.<p>That said, the new version is just ace! I gave it 30 minutes and it basically does everything I do with zsh right now. All that with about 5% of the configuration effort I put into zsh. Plus, it's so much faster than zsh.<p>I'll give fish a go as my main shell. Let's see were this goes.
As a long time bash user, I thought I can give a chance to fish. But after 30m later, when I see this [1] I went back to bash.<p>[1] <a href="http://serverfault.com/questions/164305/how-can-i-set-environment-variable-for-just-one-command-in-fish-shell" rel="nofollow">http://serverfault.com/questions/164305/how-can-i-set-enviro...</a>
I used fishshell for the better part of a year and enjoyed the experience. However, a few things bugged me:<p>- Anything that shells out using your default shell seems to assume a bourne-compatible shell. I remember this biting me when using various emacs commands that assumed all the world is a bourne shell.<p>- Copypasting commands is annoying too, but I've been evaluating zsh for the past few months and i've been bitten there too...seems like anything that isn't bash will run into that issue, and you can always just use bash for those instances.<p>- Virtualenv comes with a fish shell script, but last I checked it didn't actually work.<p>- Does fish still throw a hissy fit every time you try and tab-complete a command and your $PATH has a non-existant path in it?
I would severely miss the history completion. I can't count how many times I type !vi to return to the last file I was editing while goofing around in between editing sessions, or !scp to re-upload a fixed package. I understand the need for simplicity, but hitting the up arrow an undefined number of times until I see the command I need seems less efficient.<p>Other than that fish looks really polished and I plan on devoting a few days to it to give it a fair shake.
Somewhat tangential but is there any reason why the IRC chatroom is on OFTC rather than Freenode? I think it's the first time I see an open source project using OFTC.
Interesting idea with potential, but poor implementation. I tried to type sudo apt-get and it didn't even autofill my most used commands. I also use the guake shell client, I would want it integrated in that
Like many, I have switched to zsh a few months back and have enjoyed the experience thanks to Oh-My-Zsh. I will give it a go, but I don't know if I can really appreciate the difference.