{"slug": "bash", "name": "Bash", "category": "terminal", "category_name": "Terminal and shell", "description": "GNU's Unix shell and command language, the default shell on most Linux distributions.", "recommenders": 11, "commenters": 22, "warners": 2, "score": 10.233, "rising": 0.38, "first": "2025-11-04", "latest": "2026-10-18", "why": "Liked as a dependable everyday shell that is already installed on nearly every machine and handles small glue scripts well.", "why_is_quote": false, "has_verdict": true, "sentiment": {"recommend": 11, "neutral": 10, "compare": 0, "warn": 2}, "spark": [2, 0, 2, 1, 3, 0, 0, 0, 0, 0, 0, 3], "listed": true, "loved": ["Daily driver", "Available everywhere"], "caveat": "Language footguns", "short_quote": "I never moved to omz (or even zsh; I still rock bash) because I have 10+ years of dotfiles that cover all of my needs.", "icon": true, "domain": "gnu.org", "github_repo": null, "official_url": "https://www.gnu.org/software/bash/", "pricing": "open source", "aliases": ["Bash", "bash"], "verdict": [{"text": "Liked as a dependable everyday shell", "cites": [{"id": 802344707, "item_id": 50146544, "url": "https://news.ycombinator.com/item?id=50146544", "by": "wredcoll", "date": "2026-10-18", "stance": "recommend", "quote": "I use tmux every day, vim and bash and stuff, all great, genuinely like them", "excerpt": "I can't help but feel this constant churn of \"terminal emulator but with tmux built in\" are wildly missing the point. Terminal + Tmux is great and cool but for very specific reasons. Most of those reasons involve backwards compatibility. You can view \"Terminal based UIs\" on basically anything that can, you know, emulate a terminal and that's a pretty powerful feature. Things that consume and output text, even weird m", "context": "", "use_case": "shell", "switched_from": "", "story": "Show HN: OmniPTY \u2013 Opinionated terminal emulator for macOS and Linux"}, {"id": 787396160, "item_id": 49212260, "url": "https://news.ycombinator.com/item?id=49212260", "by": "godelski", "date": "2026-08-07", "stance": "neutral", "quote": "Despite bash being a terrible language, I still use it on a daily basis because it is useful.", "excerpt": "I love bash. I write a lot of bash too. It is a extremely powerful and useful language. But that also doesn't mean it is a good language. There are many non-intuitive things, hence that pitfalls page I linked. You can't just deflect and say that the user is \"holding it wrong\". If it is difficult and unintuitive in how to \"hold\" it correctly, that's a design problem, not a user problem. Despite bash being a terrible l", "context": "", "use_case": "daily scripting", "switched_from": "", "story": "Humans missed 1 in 3 threats approving AI agent commands across 40k game runs"}, {"id": 742967648, "item_id": 46435478, "url": "https://news.ycombinator.com/item?id=46435478", "by": "shevy-java", "date": "2025-12-30", "stance": "neutral", "quote": "I do use bash as my primary shell", "excerpt": "Try the following in sh: ////////usr/local/go/bin/go Well, how about this: I use ruby or python. And not shell. Somehow I have been doing so since +25 years. Never regretted it. Never really needed shell either. (Ok, that's not entirely true; I refer to shell scripts. I do use bash as my primary shell, largely due to simplicity; I don't use shell scripts though, save for keeping a few legacy ones should I be at a com", "context": "", "use_case": "primary shell", "switched_from": "", "story": "Go Away Python"}, {"id": 801074705, "item_id": 50067169, "url": "https://news.ycombinator.com/item?id=50067169", "by": "uecker", "date": "2026-10-13", "stance": "recommend", "quote": "the ones written in C are the most reliable (such as vim, bash, coreutils, terminals, X11\u00b9, ... also larger software such as gimp, blender)", "excerpt": "From all the programs I use, the ones written in C are the most reliable (such as vim, bash, coreutils, terminals, X11\u00b9, ... also larger software such as gimp, blender). Over decades I literally can't experience a single crash! \u00b9 The exception is the Nouveau driver, but without it X was also perfectly stable for me.", "context": "", "use_case": "", "switched_from": "", "story": "A Modern Web App in C"}]}, {"text": " that is already installed on nearly every machine and handles small glue scripts well.", "cites": [{"id": 744484673, "item_id": 46530292, "url": "https://news.ycombinator.com/item?id=46530292", "by": "pksebben", "date": "2026-01-07", "stance": "neutral", "quote": "I spin up a new VM somewhere and it's going to have bash.", "excerpt": "caveat up front: I see that the point here is to talk about a nice, good thing for people to use that is useful, and I don't think that's a bad thing. I am also always looking for ways to upgrade, and I also agree that in a modern context with modern knowledge, we can do better. However, regarding the posix skepticism - I think OP has missed (or just not mentioned) the actual thing that keeps bash/zsh from being unse", "context": "", "use_case": "shell on servers", "switched_from": "", "story": "The Case for Nushell (2023)"}, {"id": 760211249, "item_id": 47513203, "url": "https://news.ycombinator.com/item?id=47513203", "by": "tim-tday", "date": "2026-03-24", "stance": "recommend", "quote": "And use the default shell. Zsh on Mac bash on every Linux I\u2019ve ever used", "excerpt": "A terminal with copy on select. And use the default shell. Zsh on Mac bash on every Linux I\u2019ve ever used (I can\u2019t really tell the difference). Extend your history limit and close your windows now and then so they write to the history file. If you\u2019re doing shell scripting follow the Google style guide.", "context": "", "use_case": "beginner shell", "switched_from": "", "story": "Ask HN: What shell/terminal setup would you recommend to beginners today?"}, {"id": 732955008, "item_id": 45809688, "url": "https://news.ycombinator.com/item?id=45809688", "by": "tharos47", "date": "2025-11-04", "stance": "recommend", "quote": "I use ctrl+R for search that way I'm not dependent of a terminal emulator features and can get to work even on random computers.", "excerpt": "I use ctrl+R for search that way I'm not dependent of a terminal emulator features and can get to work even on random computers. https://www.gnu.org/software/bash/manual/bash.html#index-reverse_002dsearch_002dhistory-_0028C_002dr_0029", "context": "", "use_case": "reverse history search", "switched_from": "", "story": "State of Terminal Emulators in 2025: The Errant Champions"}, {"id": 782071344, "item_id": 48879459, "url": "https://news.ycombinator.com/item?id=48879459", "by": "raffraffraff", "date": "2026-07-12", "stance": "neutral", "quote": "For small stuff I use bash / sed / awk / jq / yq / curl etc.", "excerpt": "For small stuff I use bash / sed / awk / jq / yq / curl etc. I stopped using perl (a long time ago) and hate trying to build or distribute anything in Python. \"You asked for a script! I give you... a venv, a pip install, woops need to compile something, so let's install build tools. Actually let's get github actions set up to handle this, or would you prefer a Docker image? Do you have a registry so I can share the i", "context": "", "use_case": "small scripts", "switched_from": "", "story": "Amber the programming language compiled to Bash/Ksh/Zsh"}]}, {"text": " The most common complaint is that its scripting language is full of footguns and unintuitive behavior,", "cites": [{"id": 800711379, "item_id": 50044461, "url": "https://news.ycombinator.com/item?id=50044461", "by": "malux85", "date": "2026-10-11", "stance": "warn", "quote": "I try to encourage people to use better designed shells that have less of these footguns", "excerpt": "The widwit answer: \"Dont do X\" (and nothing more) The enlightened answer \"You should use A, B or C for these reasons\" Even though bash is installed on many systems, I try to encourage people to use better designed shells that have less of these footguns : Fish (https://fishshell.com/): No implicit word splitting : spaces in variables won't unexpectedly become separate arguments. Zsh (I use this: https://ohmyz.sh/): A", "context": "", "use_case": "shell", "switched_from": "", "story": "The tilde in your PATH may not be your HOME"}, {"id": 787396160, "item_id": 49212260, "url": "https://news.ycombinator.com/item?id=49212260", "by": "godelski", "date": "2026-08-07", "stance": "neutral", "quote": "Despite bash being a terrible language, I still use it on a daily basis because it is useful.", "excerpt": "I love bash. I write a lot of bash too. It is a extremely powerful and useful language. But that also doesn't mean it is a good language. There are many non-intuitive things, hence that pitfalls page I linked. You can't just deflect and say that the user is \"holding it wrong\". If it is difficult and unintuitive in how to \"hold\" it correctly, that's a design problem, not a user problem. Despite bash being a terrible l", "context": "", "use_case": "daily scripting", "switched_from": "", "story": "Humans missed 1 in 3 threats approving AI agent commands across 40k game runs"}, {"id": 754220912, "item_id": 47138807, "url": "https://news.ycombinator.com/item?id=47138807", "by": "0xbadcafebee", "date": "2026-02-24", "stance": "recommend", "quote": "I highly recommend reading the entire BASH manual", "excerpt": "If you want to master the shell (it will save years of your life), follow these guides. I highly recommend reading the entire BASH manual, it will answer every question you'll ever have, or at least give you a hint about it, as well as expose you to all the hidden knowledge (some call it \"gotchas\") you'll wish you knew later. 101 - Bash for Beginners (https://tldp.org/LDP/Bash-Beginners-Guide/html/) - Bash Tutorial (", "context": "", "use_case": "shell mastery", "switched_from": "", "story": "The Missing Semester of Your CS Education"}, {"id": 760644881, "item_id": 47540305, "url": "https://news.ycombinator.com/item?id=47540305", "by": "piekvorst", "date": "2026-03-27", "stance": "neutral", "quote": "This is bash 5.3.9-1.", "excerpt": "I can't reproduce the glob expansion problem. % echo test >'/tmp/hello world' % cat /tmp/hello* test This is bash 5.3.9-1. Still, I couldn't agree more on limiting IFS. Personally, I set it only to <LF>. In my scripts, I rely on the $(ls) idiom heavily. People I've talked to consider this an anti-pattern and suggest relying on -0, -z, --zero, --null, and -print0 flags instead. I don't deny that it's better than nothi", "context": "", "use_case": "shell", "switched_from": "", "story": "Shell Tricks That Make Life Easier (and Save Your Sanity)"}]}, {"text": " pushing some users toward fish, zsh, Nushell or Python for anything beyond simple tasks.", "cites": [{"id": 800711379, "item_id": 50044461, "url": "https://news.ycombinator.com/item?id=50044461", "by": "malux85", "date": "2026-10-11", "stance": "warn", "quote": "I try to encourage people to use better designed shells that have less of these footguns", "excerpt": "The widwit answer: \"Dont do X\" (and nothing more) The enlightened answer \"You should use A, B or C for these reasons\" Even though bash is installed on many systems, I try to encourage people to use better designed shells that have less of these footguns : Fish (https://fishshell.com/): No implicit word splitting : spaces in variables won't unexpectedly become separate arguments. Zsh (I use this: https://ohmyz.sh/): A", "context": "", "use_case": "shell", "switched_from": "", "story": "The tilde in your PATH may not be your HOME"}, {"id": 784909648, "item_id": 49056853, "url": "https://news.ycombinator.com/item?id=49056853", "by": "search_facility", "date": "2026-07-26", "stance": "warn", "quote": "Switched from bash to plain python scripts for shell stuff everywhere several years ago, and never looked back into bash zoo anymore.", "excerpt": "This \"hidden knowledge\" is fun to read but pain to remember and use, especially when working with multi-platform environments // Switched from bash to plain python scripts for shell stuff everywhere several years ago, and never looked back into bash zoo anymore. Stable syntax across Win/Mac/Linux, no bash/zsh/msys2 obscure differences, normal errors and Clause writes scaffolds quick and flawless anyway", "context": "multi-platform environments", "use_case": "shell scripting", "switched_from": "", "story": "A shell colon does nothing. Use it anyway."}, {"id": 742967648, "item_id": 46435478, "url": "https://news.ycombinator.com/item?id=46435478", "by": "shevy-java", "date": "2025-12-30", "stance": "neutral", "quote": "I do use bash as my primary shell", "excerpt": "Try the following in sh: ////////usr/local/go/bin/go Well, how about this: I use ruby or python. And not shell. Somehow I have been doing so since +25 years. Never regretted it. Never really needed shell either. (Ok, that's not entirely true; I refer to shell scripts. I do use bash as my primary shell, largely due to simplicity; I don't use shell scripts though, save for keeping a few legacy ones should I be at a com", "context": "", "use_case": "primary shell", "switched_from": "", "story": "Go Away Python"}]}], "praise": [{"label": "Daily driver", "summary": "Commenters use it every day as their primary shell and find it useful and simple.", "quotes": [{"id": 802344707, "item_id": 50146544, "url": "https://news.ycombinator.com/item?id=50146544", "by": "wredcoll", "date": "2026-10-18", "stance": "recommend", "quote": "I use tmux every day, vim and bash and stuff, all great, genuinely like them", "excerpt": "I can't help but feel this constant churn of \"terminal emulator but with tmux built in\" are wildly missing the point. Terminal + Tmux is great and cool but for very specific reasons. Most of those reasons involve backwards compatibility. You can view \"Terminal based UIs\" on basically anything that can, you know, emulate a terminal and that's a pretty powerful feature. Things that consume and output text, even weird m", "context": "", "use_case": "shell", "switched_from": "", "story": "Show HN: OmniPTY \u2013 Opinionated terminal emulator for macOS and Linux"}, {"id": 787396160, "item_id": 49212260, "url": "https://news.ycombinator.com/item?id=49212260", "by": "godelski", "date": "2026-08-07", "stance": "neutral", "quote": "Despite bash being a terrible language, I still use it on a daily basis because it is useful.", "excerpt": "I love bash. I write a lot of bash too. It is a extremely powerful and useful language. But that also doesn't mean it is a good language. There are many non-intuitive things, hence that pitfalls page I linked. You can't just deflect and say that the user is \"holding it wrong\". If it is difficult and unintuitive in how to \"hold\" it correctly, that's a design problem, not a user problem. Despite bash being a terrible l", "context": "", "use_case": "daily scripting", "switched_from": "", "story": "Humans missed 1 in 3 threats approving AI agent commands across 40k game runs"}, {"id": 742967648, "item_id": 46435478, "url": "https://news.ycombinator.com/item?id=46435478", "by": "shevy-java", "date": "2025-12-30", "stance": "neutral", "quote": "I do use bash as my primary shell", "excerpt": "Try the following in sh: ////////usr/local/go/bin/go Well, how about this: I use ruby or python. And not shell. Somehow I have been doing so since +25 years. Never regretted it. Never really needed shell either. (Ok, that's not entirely true; I refer to shell scripts. I do use bash as my primary shell, largely due to simplicity; I don't use shell scripts though, save for keeping a few legacy ones should I be at a com", "context": "", "use_case": "primary shell", "switched_from": "", "story": "Go Away Python"}]}, {"label": "Available everywhere", "summary": "It is the default on Linux and present on new VMs and random computers, so skills carry over anywhere.", "quotes": [{"id": 744484673, "item_id": 46530292, "url": "https://news.ycombinator.com/item?id=46530292", "by": "pksebben", "date": "2026-01-07", "stance": "neutral", "quote": "I spin up a new VM somewhere and it's going to have bash.", "excerpt": "caveat up front: I see that the point here is to talk about a nice, good thing for people to use that is useful, and I don't think that's a bad thing. I am also always looking for ways to upgrade, and I also agree that in a modern context with modern knowledge, we can do better. However, regarding the posix skepticism - I think OP has missed (or just not mentioned) the actual thing that keeps bash/zsh from being unse", "context": "", "use_case": "shell on servers", "switched_from": "", "story": "The Case for Nushell (2023)"}, {"id": 760211249, "item_id": 47513203, "url": "https://news.ycombinator.com/item?id=47513203", "by": "tim-tday", "date": "2026-03-24", "stance": "recommend", "quote": "And use the default shell. Zsh on Mac bash on every Linux I\u2019ve ever used", "excerpt": "A terminal with copy on select. And use the default shell. Zsh on Mac bash on every Linux I\u2019ve ever used (I can\u2019t really tell the difference). Extend your history limit and close your windows now and then so they write to the history file. If you\u2019re doing shell scripting follow the Google style guide.", "context": "", "use_case": "beginner shell", "switched_from": "", "story": "Ask HN: What shell/terminal setup would you recommend to beginners today?"}, {"id": 732955008, "item_id": 45809688, "url": "https://news.ycombinator.com/item?id=45809688", "by": "tharos47", "date": "2025-11-04", "stance": "recommend", "quote": "I use ctrl+R for search that way I'm not dependent of a terminal emulator features and can get to work even on random computers.", "excerpt": "I use ctrl+R for search that way I'm not dependent of a terminal emulator features and can get to work even on random computers. https://www.gnu.org/software/bash/manual/bash.html#index-reverse_002dsearch_002dhistory-_0028C_002dr_0029", "context": "", "use_case": "reverse history search", "switched_from": "", "story": "State of Terminal Emulators in 2025: The Errant Champions"}]}, {"label": "Glue scripting", "summary": "Paired with sed, awk, jq and curl, it handles small scripts without the packaging overhead of Python.", "quotes": [{"id": 782071344, "item_id": 48879459, "url": "https://news.ycombinator.com/item?id=48879459", "by": "raffraffraff", "date": "2026-07-12", "stance": "neutral", "quote": "For small stuff I use bash / sed / awk / jq / yq / curl etc.", "excerpt": "For small stuff I use bash / sed / awk / jq / yq / curl etc. I stopped using perl (a long time ago) and hate trying to build or distribute anything in Python. \"You asked for a script! I give you... a venv, a pip install, woops need to compile something, so let's install build tools. Actually let's get github actions set up to handle this, or would you prefer a Docker image? Do you have a registry so I can share the i", "context": "", "use_case": "small scripts", "switched_from": "", "story": "Amber the programming language compiled to Bash/Ksh/Zsh"}, {"id": 745019682, "item_id": 46563730, "url": "https://news.ycombinator.com/item?id=46563730", "by": "shevy-java", "date": "2026-01-09", "stance": "recommend", "quote": "we could simply use bash and KDE konsole with, say, 10 tabs. That setup works for me since ages", "excerpt": "> The main problem with Oh My Zsh is that it adds a lot of unnecessary bloat that affects shell startup time. Wowsers! That +0.5 seconds delay will kill cats everywhere. We must microoptimise the startup time of shells!!! Or ... we could simply use bash and KDE konsole with, say, 10 tabs. That setup works for me since ages; admittedly I use bash just as a wrapper for simple actions as well as calling a gazillion of a", "context": "", "use_case": "shell for aliases and scripts", "switched_from": "", "story": "You probably don't need Oh My Zsh"}, {"id": 736834976, "item_id": 46052186, "url": "https://news.ycombinator.com/item?id=46052186", "by": "AnimalMuppet", "date": "2025-11-25", "stance": "recommend", "quote": "Give me a bash shell, g++, perl, the shell tools, and a web browser, and I'm good.", "excerpt": "Give me a bash shell, g++, perl, the shell tools, and a web browser, and I'm good.", "context": "", "use_case": "development environment", "switched_from": "", "story": "Ask HN: If Unix gets more popular would you use it instead of Linux?"}]}, {"label": "Customizable", "summary": "Long-lived dotfiles, oh my bash and atuin let users tailor prompts, history search and functions.", "quotes": [{"id": 745017552, "item_id": 46563597, "url": "https://news.ycombinator.com/item?id=46563597", "by": "nunez", "date": "2026-01-09", "stance": "recommend", "quote": "I never moved to omz (or even zsh; I still rock bash) because I have 10+ years of dotfiles that cover all of my needs.", "excerpt": "I never moved to omz (or even zsh; I still rock bash) because I have 10+ years of dotfiles that cover all of my needs. I can see all of the cloud accounts I'm logged into, the status of my Git repositories when I'm cd'ed into them, the number of directories deep my stack is when I use pushd, and have lots and lots of custom functions that save me time. I had moving to zsh in my personal backlog for many years but hav", "context": "10+ years of dotfiles", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}, {"id": 760207009, "item_id": 47512938, "url": "https://news.ycombinator.com/item?id=47512938", "by": "fragmede", "date": "2026-03-24", "stance": "recommend", "quote": "Ghostty with bash", "excerpt": "Ghostty with bash (have Claude setup oh my bash) and a custom atuin config so Ctrl-r is usable.", "context": "", "use_case": "shell", "switched_from": "", "story": "Ask HN: What shell/terminal setup would you recommend to beginners today?"}]}, {"label": "Reliability", "summary": "One commenter says it has never crashed for them in decades of use.", "quotes": [{"id": 801074705, "item_id": 50067169, "url": "https://news.ycombinator.com/item?id=50067169", "by": "uecker", "date": "2026-10-13", "stance": "recommend", "quote": "the ones written in C are the most reliable (such as vim, bash, coreutils, terminals, X11\u00b9, ... also larger software such as gimp, blender)", "excerpt": "From all the programs I use, the ones written in C are the most reliable (such as vim, bash, coreutils, terminals, X11\u00b9, ... also larger software such as gimp, blender). Over decades I literally can't experience a single crash! \u00b9 The exception is the Nouveau driver, but without it X was also perfectly stable for me.", "context": "", "use_case": "", "switched_from": "", "story": "A Modern Web App in C"}]}, {"label": "Thorough manual", "summary": "The Bash manual is recommended as answering nearly every question and exposing hidden gotchas.", "quotes": [{"id": 754220912, "item_id": 47138807, "url": "https://news.ycombinator.com/item?id=47138807", "by": "0xbadcafebee", "date": "2026-02-24", "stance": "recommend", "quote": "I highly recommend reading the entire BASH manual", "excerpt": "If you want to master the shell (it will save years of your life), follow these guides. I highly recommend reading the entire BASH manual, it will answer every question you'll ever have, or at least give you a hint about it, as well as expose you to all the hidden knowledge (some call it \"gotchas\") you'll wish you knew later. 101 - Bash for Beginners (https://tldp.org/LDP/Bash-Beginners-Guide/html/) - Bash Tutorial (", "context": "", "use_case": "shell mastery", "switched_from": "", "story": "The Missing Semester of Your CS Education"}]}], "caveats": [{"label": "Language footguns", "summary": "Implicit word splitting, IFS handling and other non-intuitive behavior make correct scripts hard to write.", "quotes": [{"id": 800711379, "item_id": 50044461, "url": "https://news.ycombinator.com/item?id=50044461", "by": "malux85", "date": "2026-10-11", "stance": "warn", "quote": "I try to encourage people to use better designed shells that have less of these footguns", "excerpt": "The widwit answer: \"Dont do X\" (and nothing more) The enlightened answer \"You should use A, B or C for these reasons\" Even though bash is installed on many systems, I try to encourage people to use better designed shells that have less of these footguns : Fish (https://fishshell.com/): No implicit word splitting : spaces in variables won't unexpectedly become separate arguments. Zsh (I use this: https://ohmyz.sh/): A", "context": "", "use_case": "shell", "switched_from": "", "story": "The tilde in your PATH may not be your HOME"}, {"id": 787396160, "item_id": 49212260, "url": "https://news.ycombinator.com/item?id=49212260", "by": "godelski", "date": "2026-08-07", "stance": "neutral", "quote": "Despite bash being a terrible language, I still use it on a daily basis because it is useful.", "excerpt": "I love bash. I write a lot of bash too. It is a extremely powerful and useful language. But that also doesn't mean it is a good language. There are many non-intuitive things, hence that pitfalls page I linked. You can't just deflect and say that the user is \"holding it wrong\". If it is difficult and unintuitive in how to \"hold\" it correctly, that's a design problem, not a user problem. Despite bash being a terrible l", "context": "", "use_case": "daily scripting", "switched_from": "", "story": "Humans missed 1 in 3 threats approving AI agent commands across 40k game runs"}, {"id": 760644881, "item_id": 47540305, "url": "https://news.ycombinator.com/item?id=47540305", "by": "piekvorst", "date": "2026-03-27", "stance": "neutral", "quote": "This is bash 5.3.9-1.", "excerpt": "I can't reproduce the glob expansion problem. % echo test >'/tmp/hello world' % cat /tmp/hello* test This is bash 5.3.9-1. Still, I couldn't agree more on limiting IFS. Personally, I set it only to <LF>. In my scripts, I rely on the $(ls) idiom heavily. People I've talked to consider this an anti-pattern and suggest relying on -0, -z, --zero, --null, and -print0 flags instead. I don't deny that it's better than nothi", "context": "", "use_case": "shell", "switched_from": "", "story": "Shell Tricks That Make Life Easier (and Save Your Sanity)"}]}, {"label": "Cross-platform scripts", "summary": "Differences between bash, zsh and msys2 led one commenter to switch to Python for scripts on Windows, Mac and Linux.", "quotes": [{"id": 784909648, "item_id": 49056853, "url": "https://news.ycombinator.com/item?id=49056853", "by": "search_facility", "date": "2026-07-26", "stance": "warn", "quote": "Switched from bash to plain python scripts for shell stuff everywhere several years ago, and never looked back into bash zoo anymore.", "excerpt": "This \"hidden knowledge\" is fun to read but pain to remember and use, especially when working with multi-platform environments // Switched from bash to plain python scripts for shell stuff everywhere several years ago, and never looked back into bash zoo anymore. Stable syntax across Win/Mac/Linux, no bash/zsh/msys2 obscure differences, normal errors and Clause writes scaffolds quick and flawless anyway", "context": "multi-platform environments", "use_case": "shell scripting", "switched_from": "", "story": "A shell colon does nothing. Use it anyway."}]}, {"label": "Real scripting elsewhere", "summary": "Some users keep bash as an interactive shell but write real logic in Ruby or Python.", "quotes": [{"id": 742967648, "item_id": 46435478, "url": "https://news.ycombinator.com/item?id=46435478", "by": "shevy-java", "date": "2025-12-30", "stance": "neutral", "quote": "I do use bash as my primary shell", "excerpt": "Try the following in sh: ////////usr/local/go/bin/go Well, how about this: I use ruby or python. And not shell. Somehow I have been doing so since +25 years. Never regretted it. Never really needed shell either. (Ok, that's not entirely true; I refer to shell scripts. I do use bash as my primary shell, largely due to simplicity; I don't use shell scripts though, save for keeping a few legacy ones should I be at a com", "context": "", "use_case": "primary shell", "switched_from": "", "story": "Go Away Python"}, {"id": 745019682, "item_id": 46563730, "url": "https://news.ycombinator.com/item?id=46563730", "by": "shevy-java", "date": "2026-01-09", "stance": "recommend", "quote": "we could simply use bash and KDE konsole with, say, 10 tabs. That setup works for me since ages", "excerpt": "> The main problem with Oh My Zsh is that it adds a lot of unnecessary bloat that affects shell startup time. Wowsers! That +0.5 seconds delay will kill cats everywhere. We must microoptimise the startup time of shells!!! Or ... we could simply use bash and KDE konsole with, say, 10 tabs. That setup works for me since ages; admittedly I use bash just as a wrapper for simple actions as well as calling a gazillion of a", "context": "", "use_case": "shell for aliases and scripts", "switched_from": "", "story": "You probably don't need Oh My Zsh"}]}, {"label": "History expansion", "summary": "History expansion can run destructive commands unseen, though `shopt -s histverify` lets you review them first.", "quotes": [{"id": 788351504, "item_id": 49271969, "url": "https://news.ycombinator.com/item?id=49271969", "by": "fubaz", "date": "2026-08-12", "stance": "neutral", "quote": "You can also set `shopt -s histverify` to expand the history substitution on the following line", "excerpt": "> Not knowing what command you are doing before you submit it is poor design. For this reason I recommend avoiding using history expansion features with any commands in history that might destructively modify file contents, such as `find ... -delete` in GNU find. In the default Bash Emacs readline bindings, you can type Alt/Meta-^ to expand history on the current line without executing. You can also set `shopt -s his", "context": "", "use_case": "shell history expansion", "switched_from": "", "story": "A shell exclamation mark is not for yelling. Be lazy"}]}], "who": [{"by": "nunez", "context": "10+ years of dotfiles", "url": "https://news.ycombinator.com/item?id=46563597", "date": "2026-01-09"}], "tags": ["for Linux users", "for remote servers and VMs", "for small glue scripts", "for long-lived dotfiles"], "use_cases": ["shell", "beginner shell", "daily shell", "shell history expansion", "daily scripting", "shell scripting"], "compared": [{"slug": "zsh", "name": "zsh", "co": 11, "switched_from": 0, "switched_to": 2}, {"slug": "nushell", "name": "Nushell", "co": 7, "switched_from": 0, "switched_to": 3}, {"slug": "fish", "name": "fish", "co": 4, "switched_from": 0, "switched_to": 1}, {"slug": "powershell", "name": "PowerShell", "co": 5, "switched_from": 0, "switched_to": 0}, {"slug": "oh-my-zsh", "name": "Oh My Zsh", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "claude", "name": "Claude", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "jq", "name": "jq", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=47512666", "title": "Ask HN: What shell/terminal setup would you recommend to beginners today?", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=50058242", "title": "Ask HN: What's the oldest software tool you still rely on every day?", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49197565", "title": "A shell exclamation mark is not for yelling. Be lazy", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49047453", "title": "A shell colon does nothing. Use it anyway.", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=46562790", "title": "You probably don't need Oh My Zsh", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=50145628", "title": "Show HN: OmniPTY \u2013 Opinionated terminal emulator for macOS and Linux", "mentions": 1}], "sentiment_by_month": {"2025-11": {"recommend": 2}, "2025-12": {"neutral": 2}, "2026-01": {"neutral": 1, "recommend": 2}, "2026-02": {"recommend": 1}, "2026-03": {"recommend": 3, "neutral": 1}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {"neutral": 2, "warn": 1}, "2026-08": {"neutral": 3}, "2026-09": {}, "2026-10": {"warn": 1, "recommend": 3, "neutral": 1}}, "quotes": [{"id": 802344707, "item_id": 50146544, "url": "https://news.ycombinator.com/item?id=50146544", "by": "wredcoll", "date": "2026-10-18", "stance": "recommend", "quote": "I use tmux every day, vim and bash and stuff, all great, genuinely like them", "excerpt": "I can't help but feel this constant churn of \"terminal emulator but with tmux built in\" are wildly missing the point. Terminal + Tmux is great and cool but for very specific reasons. Most of those reasons involve backwards compatibility. You can view \"Terminal based UIs\" on basically anything that can, you know, emulate a terminal and that's a pretty powerful feature. Things that consume and output text, even weird m", "context": "", "use_case": "shell", "switched_from": "", "story": "Show HN: OmniPTY \u2013 Opinionated terminal emulator for macOS and Linux"}, {"id": 801074705, "item_id": 50067169, "url": "https://news.ycombinator.com/item?id=50067169", "by": "uecker", "date": "2026-10-13", "stance": "recommend", "quote": "the ones written in C are the most reliable (such as vim, bash, coreutils, terminals, X11\u00b9, ... also larger software such as gimp, blender)", "excerpt": "From all the programs I use, the ones written in C are the most reliable (such as vim, bash, coreutils, terminals, X11\u00b9, ... also larger software such as gimp, blender). Over decades I literally can't experience a single crash! \u00b9 The exception is the Nouveau driver, but without it X was also perfectly stable for me.", "context": "", "use_case": "", "switched_from": "", "story": "A Modern Web App in C"}, {"id": 800982465, "item_id": 50061404, "url": "https://news.ycombinator.com/item?id=50061404", "by": "mindcrime", "date": "2026-10-12", "stance": "neutral", "quote": "Not sure exactly, but probably either Emacs or Bash.", "excerpt": "Not sure exactly, but probably either Emacs or Bash.", "context": "", "use_case": "daily shell", "switched_from": "", "story": "Ask HN: What's the oldest software tool you still rely on every day?"}, {"id": 800934208, "item_id": 50058388, "url": "https://news.ycombinator.com/item?id=50058388", "by": "k310", "date": "2026-10-12", "stance": "recommend", "quote": "Because it holds up the universe on its shoulders.", "excerpt": "bash Because it holds up the universe on its shoulders. Even Apple's 40 floors of lawyers couldn't retire it.", "context": "", "use_case": "shell", "switched_from": "", "story": "Ask HN: What's the oldest software tool you still rely on every day?"}, {"id": 800711379, "item_id": 50044461, "url": "https://news.ycombinator.com/item?id=50044461", "by": "malux85", "date": "2026-10-11", "stance": "warn", "quote": "I try to encourage people to use better designed shells that have less of these footguns", "excerpt": "The widwit answer: \"Dont do X\" (and nothing more) The enlightened answer \"You should use A, B or C for these reasons\" Even though bash is installed on many systems, I try to encourage people to use better designed shells that have less of these footguns : Fish (https://fishshell.com/): No implicit word splitting : spaces in variables won't unexpectedly become separate arguments. Zsh (I use this: https://ohmyz.sh/): A", "context": "", "use_case": "shell", "switched_from": "", "story": "The tilde in your PATH may not be your HOME"}, {"id": 788351504, "item_id": 49271969, "url": "https://news.ycombinator.com/item?id=49271969", "by": "fubaz", "date": "2026-08-12", "stance": "neutral", "quote": "You can also set `shopt -s histverify` to expand the history substitution on the following line", "excerpt": "> Not knowing what command you are doing before you submit it is poor design. For this reason I recommend avoiding using history expansion features with any commands in history that might destructively modify file contents, such as `find ... -delete` in GNU find. In the default Bash Emacs readline bindings, you can type Alt/Meta-^ to expand history on the current line without executing. You can also set `shopt -s his", "context": "", "use_case": "shell history expansion", "switched_from": "", "story": "A shell exclamation mark is not for yelling. Be lazy"}, {"id": 788311696, "item_id": 49269481, "url": "https://news.ycombinator.com/item?id=49269481", "by": "adityaathalye", "date": "2026-08-12", "stance": "neutral", "quote": "Emacs shenanigans are why I use Bash.", "excerpt": "Well, Emacs shenanigans are why I use Bash. Also, I last had a day job five years ago, I don't have anything that looks like a career, and well you're right about some of the family and friends. You are a soothsayer!", "context": "", "use_case": "shell", "switched_from": "", "story": "A shell exclamation mark is not for yelling. Be lazy"}, {"id": 787396160, "item_id": 49212260, "url": "https://news.ycombinator.com/item?id=49212260", "by": "godelski", "date": "2026-08-07", "stance": "neutral", "quote": "Despite bash being a terrible language, I still use it on a daily basis because it is useful.", "excerpt": "I love bash. I write a lot of bash too. It is a extremely powerful and useful language. But that also doesn't mean it is a good language. There are many non-intuitive things, hence that pitfalls page I linked. You can't just deflect and say that the user is \"holding it wrong\". If it is difficult and unintuitive in how to \"hold\" it correctly, that's a design problem, not a user problem. Despite bash being a terrible l", "context": "", "use_case": "daily scripting", "switched_from": "", "story": "Humans missed 1 in 3 threats approving AI agent commands across 40k game runs"}, {"id": 784909648, "item_id": 49056853, "url": "https://news.ycombinator.com/item?id=49056853", "by": "search_facility", "date": "2026-07-26", "stance": "warn", "quote": "Switched from bash to plain python scripts for shell stuff everywhere several years ago, and never looked back into bash zoo anymore.", "excerpt": "This \"hidden knowledge\" is fun to read but pain to remember and use, especially when working with multi-platform environments // Switched from bash to plain python scripts for shell stuff everywhere several years ago, and never looked back into bash zoo anymore. Stable syntax across Win/Mac/Linux, no bash/zsh/msys2 obscure differences, normal errors and Clause writes scaffolds quick and flawless anyway", "context": "multi-platform environments", "use_case": "shell scripting", "switched_from": "", "story": "A shell colon does nothing. Use it anyway."}, {"id": 784890177, "item_id": 49055636, "url": "https://news.ycombinator.com/item?id=49055636", "by": "refp", "date": "2026-07-26", "stance": "neutral", "quote": "all you need is `bash --posix` to prove it", "excerpt": "They are NOT superflous, and all you need to prove it is `zsh` (but there are others that follow suit in similar fashions): zsh% echo \"hello world\" > data zsh% < data && echo \"READABLE\" # <- will print the contents of data hello world READABLE zsh% : < data && echo \"READABLE\" # <- this will not READABLE So, if you want something that \"everyone can use\" without going into details about the difference between commonly ", "context": "", "use_case": "demonstrating subshell behavior", "switched_from": "", "story": "A shell colon does nothing. Use it anyway."}, {"id": 782071344, "item_id": 48879459, "url": "https://news.ycombinator.com/item?id=48879459", "by": "raffraffraff", "date": "2026-07-12", "stance": "neutral", "quote": "For small stuff I use bash / sed / awk / jq / yq / curl etc.", "excerpt": "For small stuff I use bash / sed / awk / jq / yq / curl etc. I stopped using perl (a long time ago) and hate trying to build or distribute anything in Python. \"You asked for a script! I give you... a venv, a pip install, woops need to compile something, so let's install build tools. Actually let's get github actions set up to handle this, or would you prefer a Docker image? Do you have a registry so I can share the i", "context": "", "use_case": "small scripts", "switched_from": "", "story": "Amber the programming language compiled to Bash/Ksh/Zsh"}, {"id": 760644881, "item_id": 47540305, "url": "https://news.ycombinator.com/item?id=47540305", "by": "piekvorst", "date": "2026-03-27", "stance": "neutral", "quote": "This is bash 5.3.9-1.", "excerpt": "I can't reproduce the glob expansion problem. % echo test >'/tmp/hello world' % cat /tmp/hello* test This is bash 5.3.9-1. Still, I couldn't agree more on limiting IFS. Personally, I set it only to <LF>. In my scripts, I rely on the $(ls) idiom heavily. People I've talked to consider this an anti-pattern and suggest relying on -0, -z, --zero, --null, and -print0 flags instead. I don't deny that it's better than nothi", "context": "", "use_case": "shell", "switched_from": "", "story": "Shell Tricks That Make Life Easier (and Save Your Sanity)"}, {"id": 760298944, "item_id": 47518684, "url": "https://news.ycombinator.com/item?id=47518684", "by": "jeffyaw", "date": "2026-03-25", "stance": "recommend", "quote": "bash for shell.", "excerpt": "bash for shell. and i am a bit biased here, but if on windows: yaw terminal", "context": "", "use_case": "beginner shell", "switched_from": "", "story": "Ask HN: What shell/terminal setup would you recommend to beginners today?"}, {"id": 760211249, "item_id": 47513203, "url": "https://news.ycombinator.com/item?id=47513203", "by": "tim-tday", "date": "2026-03-24", "stance": "recommend", "quote": "And use the default shell. Zsh on Mac bash on every Linux I\u2019ve ever used", "excerpt": "A terminal with copy on select. And use the default shell. Zsh on Mac bash on every Linux I\u2019ve ever used (I can\u2019t really tell the difference). Extend your history limit and close your windows now and then so they write to the history file. If you\u2019re doing shell scripting follow the Google style guide.", "context": "", "use_case": "beginner shell", "switched_from": "", "story": "Ask HN: What shell/terminal setup would you recommend to beginners today?"}, {"id": 760207009, "item_id": 47512938, "url": "https://news.ycombinator.com/item?id=47512938", "by": "fragmede", "date": "2026-03-24", "stance": "recommend", "quote": "Ghostty with bash", "excerpt": "Ghostty with bash (have Claude setup oh my bash) and a custom atuin config so Ctrl-r is usable.", "context": "", "use_case": "shell", "switched_from": "", "story": "Ask HN: What shell/terminal setup would you recommend to beginners today?"}, {"id": 754220912, "item_id": 47138807, "url": "https://news.ycombinator.com/item?id=47138807", "by": "0xbadcafebee", "date": "2026-02-24", "stance": "recommend", "quote": "I highly recommend reading the entire BASH manual", "excerpt": "If you want to master the shell (it will save years of your life), follow these guides. I highly recommend reading the entire BASH manual, it will answer every question you'll ever have, or at least give you a hint about it, as well as expose you to all the hidden knowledge (some call it \"gotchas\") you'll wish you knew later. 101 - Bash for Beginners (https://tldp.org/LDP/Bash-Beginners-Guide/html/) - Bash Tutorial (", "context": "", "use_case": "shell mastery", "switched_from": "", "story": "The Missing Semester of Your CS Education"}, {"id": 745019682, "item_id": 46563730, "url": "https://news.ycombinator.com/item?id=46563730", "by": "shevy-java", "date": "2026-01-09", "stance": "recommend", "quote": "we could simply use bash and KDE konsole with, say, 10 tabs. That setup works for me since ages", "excerpt": "> The main problem with Oh My Zsh is that it adds a lot of unnecessary bloat that affects shell startup time. Wowsers! That +0.5 seconds delay will kill cats everywhere. We must microoptimise the startup time of shells!!! Or ... we could simply use bash and KDE konsole with, say, 10 tabs. That setup works for me since ages; admittedly I use bash just as a wrapper for simple actions as well as calling a gazillion of a", "context": "", "use_case": "shell for aliases and scripts", "switched_from": "", "story": "You probably don't need Oh My Zsh"}, {"id": 745017552, "item_id": 46563597, "url": "https://news.ycombinator.com/item?id=46563597", "by": "nunez", "date": "2026-01-09", "stance": "recommend", "quote": "I never moved to omz (or even zsh; I still rock bash) because I have 10+ years of dotfiles that cover all of my needs.", "excerpt": "I never moved to omz (or even zsh; I still rock bash) because I have 10+ years of dotfiles that cover all of my needs. I can see all of the cloud accounts I'm logged into, the status of my Git repositories when I'm cd'ed into them, the number of directories deep my stack is when I use pushd, and have lots and lots of custom functions that save me time. I had moving to zsh in my personal backlog for many years but hav", "context": "10+ years of dotfiles", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}, {"id": 744484673, "item_id": 46530292, "url": "https://news.ycombinator.com/item?id=46530292", "by": "pksebben", "date": "2026-01-07", "stance": "neutral", "quote": "I spin up a new VM somewhere and it's going to have bash.", "excerpt": "caveat up front: I see that the point here is to talk about a nice, good thing for people to use that is useful, and I don't think that's a bad thing. I am also always looking for ways to upgrade, and I also agree that in a modern context with modern knowledge, we can do better. However, regarding the posix skepticism - I think OP has missed (or just not mentioned) the actual thing that keeps bash/zsh from being unse", "context": "", "use_case": "shell on servers", "switched_from": "", "story": "The Case for Nushell (2023)"}, {"id": 742967648, "item_id": 46435478, "url": "https://news.ycombinator.com/item?id=46435478", "by": "shevy-java", "date": "2025-12-30", "stance": "neutral", "quote": "I do use bash as my primary shell", "excerpt": "Try the following in sh: ////////usr/local/go/bin/go Well, how about this: I use ruby or python. And not shell. Somehow I have been doing so since +25 years. Never regretted it. Never really needed shell either. (Ok, that's not entirely true; I refer to shell scripts. I do use bash as my primary shell, largely due to simplicity; I don't use shell scripts though, save for keeping a few legacy ones should I be at a com", "context": "", "use_case": "primary shell", "switched_from": "", "story": "Go Away Python"}, {"id": 739654739, "item_id": 46228421, "url": "https://news.ycombinator.com/item?id=46228421", "by": "tombert", "date": "2025-12-10", "stance": "neutral", "quote": "I know how to use systemd and I know how to use bash", "excerpt": "I love blog posts like this. You're not wrong in saying that the kernel is sort of this magical block box to most engineers (including me). I know how to use systemd and I know how to use bash and I know a few other things, but the kernel has always been \"the kernel\", and it's something I've never really tried to mess with. But you're right: ulimately the kernel is just a program. Yes, it's a big and important progra", "context": "", "use_case": "", "switched_from": "", "story": "Booting Linux in QEMU and Writing PID 1 in Go to Illustrate Kernel as Program"}, {"id": 736834976, "item_id": 46052186, "url": "https://news.ycombinator.com/item?id=46052186", "by": "AnimalMuppet", "date": "2025-11-25", "stance": "recommend", "quote": "Give me a bash shell, g++, perl, the shell tools, and a web browser, and I'm good.", "excerpt": "Give me a bash shell, g++, perl, the shell tools, and a web browser, and I'm good.", "context": "", "use_case": "development environment", "switched_from": "", "story": "Ask HN: If Unix gets more popular would you use it instead of Linux?"}, {"id": 732955008, "item_id": 45809688, "url": "https://news.ycombinator.com/item?id=45809688", "by": "tharos47", "date": "2025-11-04", "stance": "recommend", "quote": "I use ctrl+R for search that way I'm not dependent of a terminal emulator features and can get to work even on random computers.", "excerpt": "I use ctrl+R for search that way I'm not dependent of a terminal emulator features and can get to work even on random computers. https://www.gnu.org/software/bash/manual/bash.html#index-reverse_002dsearch_002dhistory-_0028C_002dr_0029", "context": "", "use_case": "reverse history search", "switched_from": "", "story": "State of Terminal Emulators in 2025: The Errant Champions"}]}