Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I quite like fish and have been using it painlessly for nearly 6 months now. I wish fish included an actual programming language that could replace bash scripts, but the sane advice from fish devs is to use a real programming language instead of bash or another shell script. Other than that I've become quite dependent on the nice autocomplete and suggestions from fish. It just works and I never have to deal with any problems once you get over the initial learning curve bump which isn't that big.


I've been thinking about trying out Fish shell for awhile, though I have zsh setup to my liking.

Concerning Xiki, it definitely remind me of Emacs org mode / shell.


You can go a long way with bash; it's worth learning because it lets you glue tools written in different "real" languages together very easily, as long as they all talk text. There aren't many other languages specifically designed for process control, orchestration and piping.

I don't like fish because it has almost no features, compared with bash.


I've never understood why anyone would inflict oneself with bash scripting. If you really need something portable you should use standard /bin/sh anyway since bash is not installed by default everywhere (I believe many linux distros don't even ship with bash anymore, but a lightweight clone called "dash"?).

And if you don't care about portability out of the box, why not use... Well basically anything else? Perl, python, ruby, lua, scheme, whatever.

The only shell scripts I ever write are basically a list of command to execute sequentially. If I need something more complex (control flow, user input, proper error handling, nontrivial string manipulation) I switch to some other programming language, it's just not worth the pain.


Many Linux distros ship with /bin/sh being dash, but they also come with /bin/bash. A lot of scripts obviously depend on bash, so distro maintainers have had to either fix them to depend only on POSIXy "sh" or just put #!/bin/bash at the top.

The reason to use dash instead of bash is speed and to a lesser extent memory usage. The goal isn't to stop needing bash, it's to speed up boot times etc. Or at least it was five years ago when this transition was happening.


When I write scripts, I often need to execute programs written in different languages. Writing such scripts in a languages like Python and Ruby is very clumsy.

Whereas the scripts I write in Ruby tend to rely heavily on a bunch of gems that add enormously to startup time. These scripts also often end up as stages in a pipeline executed from bash.

Fork/join shared-nothing parallelism is also very easy to do in bash, and is how I normally use more cores to get jobs done more quickly.


I don't know, I feel like POpen and friends in python just aren't as nice as doing 'thing-one | thing-two' kinda stuff, with some ifs, and some variables.


> I don't like fish because it has almost no features, compared with bash.

Which features would that be?


Fish is interesting and grows on you but suffers from a number of showstopper bugs (e.g [0]) that prevent me from using it.

[0]: https://github.com/fish-shell/fish-shell/issues/1374


I used fish for several years and fortunately never came across that one. It's pretty awful.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: