I used fish for a couple of years and really liked it. But I recently learned that I can configure ZSH to have all of the same auto-complete and plugins that I loved from fish. Now I have all of the creature comforts I like, with POSIX compliance I found that while fish has better syntax than bash for most things, the hassles with incompatibility or unexpected behavior brought me much more trouble than BASH's syntax…
This is my problem as well. I’ve been using fish for quite a long time, and I’m still frustrated by weird posix incompatibility.
Another random tip: python virtualenv generates a activate.fish script that you should use instead of the plain activate script.