3 ms·
I've been giving fish a try on a periodic basis every 6 months or so. The pattern is always the same: I read an amazing article on how fish makes X easier/fanc
by blacklight 3y ago
I've been giving fish a try on a periodic basis every 6 months or so.
The pattern is always the same: I read an amazing article on how fish makes X easier/fancier than bash/zsh, I install it again, I spend half a day trying to export my two decades of bash/zsh customizations, and eventually I just give up overwhelmed by the amount of required work.
Fish is a great shell, but I don't know why they decided to go all the way and completely break the compatibility with anything that POSIX has produced over the past four decades.
I won't rewrite all of my shell functions, aliases, for loops, string concatenations and environment variables to comply with a shell that is only compliant with itself, sorry. And I don't know why they decided to go the nuclear way and break compatibility so hard where they could have at least guaranteed a back-compatibility layer with (at least) zsh. Reinventing the whole wheel to make it look exactly the way you want, while disregarding compatibility with everything that already exists, is probably the biggest violation of the UNIX philosophy.
- em-bee 3y agothen fish is maybe not for you for now. i like fish exactly because it broke out of the limitations imposed by POSIX. in my view, POSIX should have never even gone as far as specifying any kind of shell syntax. imagine what we'd do if it had gone even as far as specifying programming languages. that stuff just doesn't belong there. compatibility should be limited to interoperability. but it should not limit how we can design our tools. and the tools do adapt. more and more of them work just fine with fish. maybe some day in the future your tools will work with fish too. I spend half a day trying to export my two decades of bash/zsh customizations don't. if you switch to fish, you should not want/need those customizations, because if you want to make fish look or work like your old shell, why are you even switching? you are learning a new environment with new features. get used to fish as it is first. after a while you may discover fish's own customization options, and the many tools that provide customizations across multiple shells. your own handcoded adaptions are probably not even portable to any other shell. Reinventing the whole wheel to make it look exactly the way you want, while disregarding compatibility with everything that already exists, is probably the biggest violation of the UNIX philosophy fish is not reinventing the wheel. it is creating new wheels with features that we never had before. the popularity of fish just shows that this incompatibility is not a problem to many. if it were, fish would be dead by now. other shells are gaining ground that also break compatibility and maybe we'll find a future where these compatibility issues are not issues anymore because we will have learned to build environments that don't depend on that compatibility.
- lloeki 3y agoWhat broke fish for me is behaviour bugs. e.g https://github.com/fish-shell/fish-shell/issues/1786 https://github.com/fish-shell/fish-shell/issues/1786 but there are more that makes it a no go for me.
- em-bee 3y agonot really a bug but a missing feature but i get your point. i find psub one of the weak spots of fish, and i'd prefer if fish could support >() and <() as syntax instead. it's much more intuitive (foo) is clearly a command and > and < are in and out respectively. if i look at (foo | psub) i am wondering what that is supposed to mean.
- hibbelig 3y agoOne idea: Maybe your shell functions do not all need to be shell functions, maybe they can be shell scripts instead. Put them in ~/bin, then you can use them regardless of the shell you're using. Of course, if the shell function or alias needs to modify the shell state, then it won't work as a shell script.
- throwaway290 3y agoI am using fish full time for about 2 years. I have to switch to zsh very occasionally, my main frustration was with py venv activate but apparently there's a fish activate script now. I am enjoying it otherwise. I use Starship though, not OMF. I didn't have too many custom functions to migrate too.