10 ms·
I think it's time people start using something better than bash/zsh that is decades old, like fish or even come up with a more modern shell. Even by looking at
by h1d 8y ago
I think it's time people start using something better than bash/zsh that is decades old, like fish or even come up with a more modern shell.
Even by looking at these examples, you see it has less verbosity like "then" and "do", you can reference arguments as $argv instead of cryptic $@ and exit status code as $status instead of $? which is confusing with $! and the likes.
https://blog.codeship.com/lets-talk-about-shell-scripting/ https://blog.codeship.com/lets-talk-about-shell-scripting/
https://fishshell.com/docs/current/tutorial.html https://fishshell.com/docs/current/tutorial.html
Shell is such an integral part of admins and programmers workflow yet I find it hard to believe this field has been so slow at improving. Even the fish site jokingly states "Finally, a command
line shell for the 90s" implying the others are even older.
- zingmars 8y agoI think a big issue is that bash is available everywhere, while fish might not be. There's also the fact that a lot of us have fancy dotfiles for our work/home computers, and switching to another shell would mean having to rewrite them in the target shell language.
- yani 8y agoAvailability is a big issue. It is nearly impossible to get a seasoned sysadmin to install fish for you when bash is available.
- h1d 8y agoSo, you'd rather use something that is decades old because you can't/don't want to (ask to) install 1 new program on the server and take a weekend to rebuild your config file? You can simply import aliases as is and in some cases, you may be able to even simplify parts of your config. Personally, it was easy for me as I'm administering the servers and it was all just installing fish on every servers. (some dozens.)
- squeaky-clean 8y agoIt's not just me, but convincing my team to switch to a new scripting language. Especially if they've never heard of fish and have been using bash/sh their whole careers.
- znpy 8y ago> So, you'd rather use something that is decades old because you can't/don't want to (ask to) install 1 new program on the server and take a weekend to rebuild your config file? Absolutely, yes. Because long story short, bash is TriedAndTrue® technology. Stuff that works. It takes a bit of dedication to be mastered at a decent level but it pays off immensely. It's so ubiquitous it is one of those tools that you can learn once, use for the rest of your life, and use in a lot of contexts. It's so widespread that it can bring you very far with very little. All this being said, as someone who used to write code for a living (and now works as a System Engineer, using the bash shell everyday) I must say that if you do not do input verification (according to the language of your choice) and something goes wrong then it's your fault.
- opinionator1 8y ago"works" More like "better the devil you know" (if you can even say that much). Bash doesn't scale. Every shop larger than 1 has been burned by bash gotchas. Use a real scripting language and shell out to the commands and builtins when necessary. At my shop bash is strictly disallowed in production environments and we're all better off for it.
- robot01 8y ago
- yAnonymous 8y agoJust make the start. When a modern shell becomes reliable and popular enough, it'll slowly replace the old ones.
- Sean1708 8y agoYou might find the Oil Blog[0] interesting, there are a lot of interesting thoughts there about what a truly modern shell might look like. [0]: https://www.oilshell.org/blog/ https://www.oilshell.org/blog/
- h1d 8y agoGreat read, thanks.
- freddref 8y agoI've started using Ammonite for scripting, which certainly feels more solid than bash. https://github.com/lihaoyi/Ammonite https://github.com/lihaoyi/Ammonite Many times previously I've starting really quickly testing/prototyping an idea in bash, which eventually grew large and unweildy. Ammonite appears like it might allow quick hacking, but also the option to easily transition your scripts into scala proper while leveraging the good bits of Java.
- stronglikedan 8y agoWhy not both? > Bash has arrays and a safe mode, which may make it just about acceptable under safe coding practices, when used correctly. > Fish is easier to use correctly, but lacks a safe mode. > Prototyping in fish is therefore a good idea, provided that you know how to translate correctly from fish to bash.
- wheaties 8y agoWhat's wrong with something that's decades old? Bash is great for command line and small scripts. It's once you surpass 100 lines where things get problematic. At that point, you're not writing a shell script, you're writing a tiny application and need to treat it as such.
- Silhouette 8y agoWhat's wrong with something that's decades old? In the case of shells, not benefitting from the extra decades of experience. There are some horrible things that you can do with Bash just by mistyping a single character or using the wrong type of quotes or failing to appreciate how something will expand in some edge case. This is not a desirable property for an environment that people use after being paged at 4am, while their employer is losing $XXX,000/minute because something critical is down, and where the half-asleep operator is one short command away from deleting the universe without so much as a confirmation prompt.
- collinmanderson 8y agoDoesn’t the original article say fish isn’t safe? > Fish is easier to use correctly, but lacks a safe mode. Prototyping in fish is therefore a good idea, provided that you know how to translate correctly from fish to bash.