{"slug": "zsh", "name": "zsh", "category": "terminal", "category_name": "Terminal and shell", "description": "Extensible Unix shell with advanced completion, globbing, and interactive editing features.", "recommenders": 8, "commenters": 21, "warners": 2, "score": 8.464, "rising": 0.04, "first": "2026-01-04", "latest": "2026-10-29", "why": "HN commenters like zsh for its plugin ecosystem, often used via oh-my-zsh, and for interactive niceties like vi-mode, fast tab completion and a fully customizable prompt.", "why_is_quote": false, "has_verdict": true, "sentiment": {"recommend": 7, "neutral": 13, "compare": 0, "warn": 2}, "spark": [0, 0, 2, 1, 1, 0, 1, 0, 0, 0, 1, 1], "listed": true, "loved": ["Plugin ecosystem", "Interactive editing"], "caveat": "Bad defaults", "short_quote": "I'm a zsh vi-mode guy - always have been, always will be", "icon": true, "domain": "ohmyz.sh", "github_repo": null, "official_url": "https://www.zsh.org/", "pricing": "open source", "aliases": ["zsh", "Zsh"], "verdict": [{"text": "HN commenters like zsh for its plugin ecosystem, often used via oh-my-zsh,", "cites": [{"id": 800843329, "item_id": 50052708, "url": "https://news.ycombinator.com/item?id=50052708", "by": "Greed", "date": "2026-10-12", "stance": "neutral", "quote": "It's tough to give up the niceties of zsh and it's various plug-in ecosystems", "excerpt": "> so you might as well use one of those. Did someone say... Xonsh?! It's tough to give up the niceties of zsh and it's various plug-in ecosystems, but I would love to be able to use Xonsh [1] as a daily driver for exactly the reasons stated. It is already the language I lean on over bash for most utility scripts with its kitchen sink built-ins. [1] https://xon.sh/", "context": "", "use_case": "interactive shell", "switched_from": "", "story": "The tilde in your PATH may not be your HOME"}, {"id": 744475008, "item_id": 46529688, "url": "https://news.ycombinator.com/item?id=46529688", "by": "BadBadJellyBean", "date": "2026-01-07", "stance": "neutral", "quote": "I use zsh but only because of oh-my-zsh.", "excerpt": "I have always struggled a bit with shell replacements. I use zsh but only because of oh-my-zsh. Apart from that I always thought of shell scripts as a necessary evil for interoperability. Today you can usually expect a linux system to have bash or at least sh. That is why I do shell scripting. Nushell is usally not preinstalled on a system and so I cannot expect it. If I want to do real scripting/programming I use py", "context": "", "use_case": "shell", "switched_from": "", "story": "The Case for Nushell (2023)"}, {"id": 800711377, "item_id": 50044461, "url": "https://news.ycombinator.com/item?id=50044461", "by": "malux85", "date": "2026-10-11", "stance": "recommend", "quote": "Zsh (I use this: https://ohmyz.sh/)", "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": "bash", "story": "The tilde in your PATH may not be your HOME"}]}, {"text": " and for interactive niceties like vi-mode, fast tab completion and a fully customizable prompt.", "cites": [{"id": 784894865, "item_id": 49055929, "url": "https://news.ycombinator.com/item?id=49055929", "by": "refp", "date": "2026-07-26", "stance": "recommend", "quote": "I'm a zsh vi-mode guy - always have been, always will be", "excerpt": "DUDE! I wrote my first real `.ps1` the other day for auto-installing all dependencies needed to run a `gitea`-runner on windows for windows builds; powershell - felt like the lover I never had. And the documentation in readable comments at the top that just.. generates usable docs? Damn, damn, damn. There is a part of me that low-key wanna try that as my daily driver for a week or two. But with that said, I'm a zsh v", "context": "", "use_case": "daily shell", "switched_from": "", "story": "A shell colon does nothing. Use it anyway."}, {"id": 755051394, "item_id": 47190712, "url": "https://news.ycombinator.com/item?id=47190712", "by": "kkfx", "date": "2026-02-27", "stance": "recommend", "quote": "generally I came back to zsh", "excerpt": "Personally, while living in Emacs (EXWM), I still can't live on eshell, the issue is \"the terminal\", too many commands are simply uncomfortable to use in eshell while run smoothly in a real terminal. I've also tried some new shells, the one I last more is xonsh, but generally I came back to zsh even if I use in general much less the shell than before thanks to Emacs, the 2D shell. Emacs completion also it's very nice", "context": "", "use_case": "shell", "switched_from": "xonsh", "story": "Eschewing Zshell for Emacs Shell (2014)"}, {"id": 777307552, "item_id": 48581722, "url": "https://news.ycombinator.com/item?id=48581722", "by": "adrian_b", "date": "2026-06-17", "stance": "neutral", "quote": "I use a rather complicated zsh prompt", "excerpt": "Thanks. I use a rather complicated zsh prompt, complicated enough so that I could never convince bash to execute an equivalent prompt correctly, despite the fact that the features used by the prompt are supposed to be supported in bash too. (The prompt syntax is quite different in zsh and in bash.) As you say, to be able to write the prompt I had to study carefully the zsh manual. However, I consider this a minor dis", "context": "", "use_case": "shell with custom prompt", "switched_from": "bash", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}]}, {"text": " The most common complaint is bad defaults that push users toward heavy configuration or oh-my-zsh,", "cites": [{"id": 745020368, "item_id": 46563773, "url": "https://news.ycombinator.com/item?id=46563773", "by": "mifydev", "date": "2026-01-10", "stance": "warn", "quote": "The problem with zsh, as with a lot of open source tools is bad defaults.", "excerpt": "The problem with zsh, as with a lot of open source tools is bad defaults. If only zsh had a better out of the box experience then OMZ wouldn't be needed. I used maintain a lot of configs, over 10 years I just keep forgetting what did I set up. I don't want to be bothered with this anymore.", "context": "", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}, {"id": 744475008, "item_id": 46529688, "url": "https://news.ycombinator.com/item?id=46529688", "by": "BadBadJellyBean", "date": "2026-01-07", "stance": "neutral", "quote": "I use zsh but only because of oh-my-zsh.", "excerpt": "I have always struggled a bit with shell replacements. I use zsh but only because of oh-my-zsh. Apart from that I always thought of shell scripts as a necessary evil for interoperability. Today you can usually expect a linux system to have bash or at least sh. That is why I do shell scripting. Nushell is usally not preinstalled on a system and so I cannot expect it. If I want to do real scripting/programming I use py", "context": "", "use_case": "shell", "switched_from": "", "story": "The Case for Nushell (2023)"}, {"id": 745037936, "item_id": 46564871, "url": "https://news.ycombinator.com/item?id=46564871", "by": "nickjj", "date": "2026-01-10", "stance": "recommend", "quote": "When I switched to zsh 5 years ago, I went with a stock set up too.", "excerpt": "When I switched to zsh 5 years ago, I went with a stock set up too. There's quite a few things the OP's post didn't mention about shell history that I think are really important: setopt HIST_IGNORE_ALL_DUPS # Never add duplicate entries. setopt HIST_IGNORE_SPACE # Ignore commands that start with a space. setopt HIST_REDUCE_BLANKS # Remove unnecessary blank lines. It's possible to roll your own prompt that does helpfu", "context": "", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}]}, {"text": " and one commenter left for fish over performance and stability issues.", "cites": [{"id": 777315089, "item_id": 48582193, "url": "https://news.ycombinator.com/item?id=48582193", "by": "lanycrost", "date": "2026-06-18", "stance": "warn", "quote": "Because of the performance and stability issues I moved to fish", "excerpt": "Because of the performance and stability issues I moved to fish for 1 year and I like it even more, it's syntax, functions it's tab completions, for some reason with zsh I always had an issues, my bad, but fish work perfectly out of the box.", "context": "", "use_case": "shell", "switched_from": "", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}]}], "praise": [{"label": "Plugin ecosystem", "summary": "Commenters value zsh's plugins, frameworks like oh-my-zsh, and add-ons such as syntax highlighting.", "quotes": [{"id": 800843329, "item_id": 50052708, "url": "https://news.ycombinator.com/item?id=50052708", "by": "Greed", "date": "2026-10-12", "stance": "neutral", "quote": "It's tough to give up the niceties of zsh and it's various plug-in ecosystems", "excerpt": "> so you might as well use one of those. Did someone say... Xonsh?! It's tough to give up the niceties of zsh and it's various plug-in ecosystems, but I would love to be able to use Xonsh [1] as a daily driver for exactly the reasons stated. It is already the language I lean on over bash for most utility scripts with its kitchen sink built-ins. [1] https://xon.sh/", "context": "", "use_case": "interactive shell", "switched_from": "", "story": "The tilde in your PATH may not be your HOME"}, {"id": 744475008, "item_id": 46529688, "url": "https://news.ycombinator.com/item?id=46529688", "by": "BadBadJellyBean", "date": "2026-01-07", "stance": "neutral", "quote": "I use zsh but only because of oh-my-zsh.", "excerpt": "I have always struggled a bit with shell replacements. I use zsh but only because of oh-my-zsh. Apart from that I always thought of shell scripts as a necessary evil for interoperability. Today you can usually expect a linux system to have bash or at least sh. That is why I do shell scripting. Nushell is usally not preinstalled on a system and so I cannot expect it. If I want to do real scripting/programming I use py", "context": "", "use_case": "shell", "switched_from": "", "story": "The Case for Nushell (2023)"}, {"id": 745037936, "item_id": 46564871, "url": "https://news.ycombinator.com/item?id=46564871", "by": "nickjj", "date": "2026-01-10", "stance": "recommend", "quote": "When I switched to zsh 5 years ago, I went with a stock set up too.", "excerpt": "When I switched to zsh 5 years ago, I went with a stock set up too. There's quite a few things the OP's post didn't mention about shell history that I think are really important: setopt HIST_IGNORE_ALL_DUPS # Never add duplicate entries. setopt HIST_IGNORE_SPACE # Ignore commands that start with a space. setopt HIST_REDUCE_BLANKS # Remove unnecessary blank lines. It's possible to roll your own prompt that does helpfu", "context": "", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}]}, {"label": "Interactive editing", "summary": "Vi-mode, fast tab-cycling completion and TAB expansion of history shortcuts are cited as daily conveniences.", "quotes": [{"id": 784894865, "item_id": 49055929, "url": "https://news.ycombinator.com/item?id=49055929", "by": "refp", "date": "2026-07-26", "stance": "recommend", "quote": "I'm a zsh vi-mode guy - always have been, always will be", "excerpt": "DUDE! I wrote my first real `.ps1` the other day for auto-installing all dependencies needed to run a `gitea`-runner on windows for windows builds; powershell - felt like the lover I never had. And the documentation in readable comments at the top that just.. generates usable docs? Damn, damn, damn. There is a part of me that low-key wanna try that as my daily driver for a week or two. But with that said, I'm a zsh v", "context": "", "use_case": "daily shell", "switched_from": "", "story": "A shell colon does nothing. Use it anyway."}, {"id": 755051394, "item_id": 47190712, "url": "https://news.ycombinator.com/item?id=47190712", "by": "kkfx", "date": "2026-02-27", "stance": "recommend", "quote": "generally I came back to zsh", "excerpt": "Personally, while living in Emacs (EXWM), I still can't live on eshell, the issue is \"the terminal\", too many commands are simply uncomfortable to use in eshell while run smoothly in a real terminal. I've also tried some new shells, the one I last more is xonsh, but generally I came back to zsh even if I use in general much less the shell than before thanks to Emacs, the 2D shell. Emacs completion also it's very nice", "context": "", "use_case": "shell", "switched_from": "xonsh", "story": "Eschewing Zshell for Emacs Shell (2014)"}, {"id": 788323328, "item_id": 49270208, "url": "https://news.ycombinator.com/item?id=49270208", "by": "idoubtit", "date": "2026-08-12", "stance": "neutral", "quote": "with zsh, I'd suggest hitting TAB to expand the magic into a static text", "excerpt": "Decades ago, I was taught to use `!` and Co, by a Linux user who was fond of the `sudo !!` trick. Then I switched from this implicit interpolation to explicit shortcuts, and I'm glad I did. As suggested in the FAQ at the bottom, instead of !\u2026 you can use ctrl-r. Or better, optionally type the first letters then alt-p or \"up\". It's more powerful and more extensible. Other shortcuts, like alt-., allow navigating into t", "context": "", "use_case": "shell", "switched_from": "", "story": "A shell exclamation mark is not for yelling. Be lazy"}]}, {"label": "Custom prompts", "summary": "Users write complex custom prompts in zsh that they could not get working in bash.", "quotes": [{"id": 777307552, "item_id": 48581722, "url": "https://news.ycombinator.com/item?id=48581722", "by": "adrian_b", "date": "2026-06-17", "stance": "neutral", "quote": "I use a rather complicated zsh prompt", "excerpt": "Thanks. I use a rather complicated zsh prompt, complicated enough so that I could never convince bash to execute an equivalent prompt correctly, despite the fact that the features used by the prompt are supposed to be supported in bash too. (The prompt syntax is quite different in zsh and in bash.) As you say, to be able to write the prompt I had to study carefully the zsh manual. However, I consider this a minor dis", "context": "", "use_case": "shell with custom prompt", "switched_from": "bash", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}, {"id": 745037936, "item_id": 46564871, "url": "https://news.ycombinator.com/item?id=46564871", "by": "nickjj", "date": "2026-01-10", "stance": "recommend", "quote": "When I switched to zsh 5 years ago, I went with a stock set up too.", "excerpt": "When I switched to zsh 5 years ago, I went with a stock set up too. There's quite a few things the OP's post didn't mention about shell history that I think are really important: setopt HIST_IGNORE_ALL_DUPS # Never add duplicate entries. setopt HIST_IGNORE_SPACE # Ignore commands that start with a space. setopt HIST_REDUCE_BLANKS # Remove unnecessary blank lines. It's possible to roll your own prompt that does helpfu", "context": "", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}]}, {"label": "macOS default", "summary": "Commenters note zsh is the default shell on macOS and suggest simply using it there.", "quotes": [{"id": 796790288, "item_id": 49799393, "url": "https://news.ycombinator.com/item?id=49799393", "by": "ocd", "date": "2026-09-22", "stance": "recommend", "quote": "switched to zsh as default shell", "excerpt": "Perhaps, but the BSD developers do not fully invite themselves into your home and network through use of their operating system. I do appreciate however that macOS is BSD somewhere under the hood and switched to zsh as default shell (even if it was supposedly only for licensing reasons, but I believe it's the correct decision practically or legally)", "context": "", "use_case": "default shell", "switched_from": "", "story": "I said no and Apple said yes"}, {"id": 760211248, "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?"}]}, {"label": "Safer variables", "summary": "Unquoted variables don't implicitly split into multiple arguments, avoiding a common bash footgun.", "quotes": [{"id": 800711377, "item_id": 50044461, "url": "https://news.ycombinator.com/item?id=50044461", "by": "malux85", "date": "2026-10-11", "stance": "recommend", "quote": "Zsh (I use this: https://ohmyz.sh/)", "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": "bash", "story": "The tilde in your PATH may not be your HOME"}]}, {"label": "Responsive prompt", "summary": "One user reports a tuned config giving a sub-5ms prompt and sub-1ms input lag, even on a low-grade laptop.", "quotes": [{"id": 775216498, "item_id": 48451031, "url": "https://news.ycombinator.com/item?id=48451031", "by": "idoubtit", "date": "2026-06-08", "stance": "neutral", "quote": "my zsh config grants me a sub 5ms prompt and a sub 1ms input lag", "excerpt": "The problem with this article is that the benchmark method they use is flawed. The documentation of zshbench explains why: https://github.com/romkatv/zsh-bench Even with a low grade laptop, my zsh config grants me a sub 5ms prompt and a sub 1ms input lag, and that's far more important than the exit time. ./zsh-bench ==> benchmarking login shell of user XYZ ... creates_tty=0 has_compsys=1 has_syntax_highlighting=0 has", "context": "", "use_case": "shell", "switched_from": "", "story": "Life is too short for a slow terminal"}]}], "caveats": [{"label": "Bad defaults", "summary": "Out of the box zsh needs configuration or oh-my-zsh, and maintaining configs over years is tiresome.", "quotes": [{"id": 745020368, "item_id": 46563773, "url": "https://news.ycombinator.com/item?id=46563773", "by": "mifydev", "date": "2026-01-10", "stance": "warn", "quote": "The problem with zsh, as with a lot of open source tools is bad defaults.", "excerpt": "The problem with zsh, as with a lot of open source tools is bad defaults. If only zsh had a better out of the box experience then OMZ wouldn't be needed. I used maintain a lot of configs, over 10 years I just keep forgetting what did I set up. I don't want to be bothered with this anymore.", "context": "", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}, {"id": 744475008, "item_id": 46529688, "url": "https://news.ycombinator.com/item?id=46529688", "by": "BadBadJellyBean", "date": "2026-01-07", "stance": "neutral", "quote": "I use zsh but only because of oh-my-zsh.", "excerpt": "I have always struggled a bit with shell replacements. I use zsh but only because of oh-my-zsh. Apart from that I always thought of shell scripts as a necessary evil for interoperability. Today you can usually expect a linux system to have bash or at least sh. That is why I do shell scripting. Nushell is usally not preinstalled on a system and so I cannot expect it. If I want to do real scripting/programming I use py", "context": "", "use_case": "shell", "switched_from": "", "story": "The Case for Nushell (2023)"}, {"id": 745037936, "item_id": 46564871, "url": "https://news.ycombinator.com/item?id=46564871", "by": "nickjj", "date": "2026-01-10", "stance": "recommend", "quote": "When I switched to zsh 5 years ago, I went with a stock set up too.", "excerpt": "When I switched to zsh 5 years ago, I went with a stock set up too. There's quite a few things the OP's post didn't mention about shell history that I think are really important: setopt HIST_IGNORE_ALL_DUPS # Never add duplicate entries. setopt HIST_IGNORE_SPACE # Ignore commands that start with a space. setopt HIST_REDUCE_BLANKS # Remove unnecessary blank lines. It's possible to roll your own prompt that does helpfu", "context": "", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}]}, {"label": "Not POSIX-like", "summary": "zsh's redirection behaves differently from other POSIX-like shells, and bash rather than zsh is what Linux systems typically provide.", "quotes": [{"id": 784890176, "item_id": 49055636, "url": "https://news.ycombinator.com/item?id=49055636", "by": "refp", "date": "2026-07-26", "stance": "neutral", "quote": "all you need to prove it is `zsh`", "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 redirection behavior", "switched_from": "", "story": "A shell colon does nothing. Use it anyway."}, {"id": 784964544, "item_id": 49060284, "url": "https://news.ycombinator.com/item?id=49060284", "by": "kazinator", "date": "2026-07-26", "stance": "neutral", "quote": "zsh not only does the cat-like dumping to stdout in non-interactive mode, but it also does the redirection to the pager!!!", "excerpt": "I understand; it's just \"here are these cool, obscure things you can do with the colon\". I had no idea it was supposed to be \"here are these cool, obscure things yuo can do with the colon, carefully coded to work on numerous POSIX-like shells that are in widespread use. To me, it's \"cool\" that you can just do \"< test-file && echo exists\", on a shell whose developers haven't decided to imbue a whole bunch of new requi", "context": "", "use_case": "", "switched_from": "", "story": "A shell colon does nothing. Use it anyway."}, {"id": 744475008, "item_id": 46529688, "url": "https://news.ycombinator.com/item?id=46529688", "by": "BadBadJellyBean", "date": "2026-01-07", "stance": "neutral", "quote": "I use zsh but only because of oh-my-zsh.", "excerpt": "I have always struggled a bit with shell replacements. I use zsh but only because of oh-my-zsh. Apart from that I always thought of shell scripts as a necessary evil for interoperability. Today you can usually expect a linux system to have bash or at least sh. That is why I do shell scripting. Nushell is usally not preinstalled on a system and so I cannot expect it. If I want to do real scripting/programming I use py", "context": "", "use_case": "shell", "switched_from": "", "story": "The Case for Nushell (2023)"}]}, {"label": "Performance, stability", "summary": "One commenter switched to fish after ongoing performance and stability issues with zsh.", "quotes": [{"id": 777315089, "item_id": 48582193, "url": "https://news.ycombinator.com/item?id=48582193", "by": "lanycrost", "date": "2026-06-18", "stance": "warn", "quote": "Because of the performance and stability issues I moved to fish", "excerpt": "Because of the performance and stability issues I moved to fish for 1 year and I like it even more, it's syntax, functions it's tab completions, for some reason with zsh I always had an issues, my bad, but fish work perfectly out of the box.", "context": "", "use_case": "shell", "switched_from": "", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}]}, {"label": "Learning curve", "summary": "Writing an advanced prompt required carefully studying the zsh manual.", "quotes": [{"id": 777307552, "item_id": 48581722, "url": "https://news.ycombinator.com/item?id=48581722", "by": "adrian_b", "date": "2026-06-17", "stance": "neutral", "quote": "I use a rather complicated zsh prompt", "excerpt": "Thanks. I use a rather complicated zsh prompt, complicated enough so that I could never convince bash to execute an equivalent prompt correctly, despite the fact that the features used by the prompt are supposed to be supported in bash too. (The prompt syntax is quite different in zsh and in bash.) As you say, to be able to write the prompt I had to study carefully the zsh manual. However, I consider this a minor dis", "context": "", "use_case": "shell with custom prompt", "switched_from": "bash", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}]}], "who": [{"by": "vuggamie", "context": "older developer (50+)", "url": "https://news.ycombinator.com/item?id=50289296", "date": "2026-10-29"}], "tags": ["for macOS users", "for vim users", "for bash switchers", "for terminal-centric workflows"], "use_cases": ["shell", "daily shell", "interactive shell", "default shell", "shell scripts", "demonstrating redirection behavior"], "compared": [{"slug": "bash", "name": "Bash", "co": 11, "switched_from": 2, "switched_to": 0}, {"slug": "fish", "name": "fish", "co": 6, "switched_from": 0, "switched_to": 2}, {"slug": "oh-my-zsh", "name": "Oh My Zsh", "co": 7, "switched_from": 0, "switched_to": 0}, {"slug": "xonsh", "name": "Xonsh", "co": 2, "switched_from": 1, "switched_to": 0}, {"slug": "claude", "name": "Claude", "co": 4, "switched_from": 0, "switched_to": 0}, {"slug": "nushell", "name": "Nushell", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "tmux", "name": "tmux", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "vim", "name": "Vim", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=49047453", "title": "A shell colon does nothing. Use it anyway.", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=50042425", "title": "The tilde in your PATH may not be your HOME", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=48573813", "title": "Bringing down my ZSH load times from ~3.1s to ~230ms", "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=46528142", "title": "The Case for Nushell (2023)", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=46485989", "title": "Can I start using Wayland in 2026?", "mentions": 2}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {"neutral": 3, "recommend": 2, "warn": 1}, "2026-02": {"recommend": 1}, "2026-03": {"recommend": 1}, "2026-04": {"neutral": 1}, "2026-05": {"recommend": 1}, "2026-06": {"neutral": 2, "warn": 1}, "2026-07": {"neutral": 2}, "2026-08": {"neutral": 3}, "2026-09": {"recommend": 1}, "2026-10": {"recommend": 1, "neutral": 2}}, "quotes": [{"id": 804628737, "item_id": 50289296, "url": "https://news.ycombinator.com/item?id=50289296", "by": "vuggamie", "date": "2026-10-29", "stance": "neutral", "quote": "I spend my day in vim and zsh", "excerpt": "As an older developer (50+) I tend to use terminal apps for my workflow: vim, ssh, git, scripts for building, and now Claude code. There are gui and web interfaces for all of this. The junior developers on my team are not comfortable with terminal apps. I spend my day in vim and zsh, but the world has moved on. On we go, up the ladder of abstraction.", "context": "older developer (50+)", "use_case": "daily shell", "switched_from": "", "story": "Ask HN: Why are there not more terminal apps?"}, {"id": 800843329, "item_id": 50052708, "url": "https://news.ycombinator.com/item?id=50052708", "by": "Greed", "date": "2026-10-12", "stance": "neutral", "quote": "It's tough to give up the niceties of zsh and it's various plug-in ecosystems", "excerpt": "> so you might as well use one of those. Did someone say... Xonsh?! It's tough to give up the niceties of zsh and it's various plug-in ecosystems, but I would love to be able to use Xonsh [1] as a daily driver for exactly the reasons stated. It is already the language I lean on over bash for most utility scripts with its kitchen sink built-ins. [1] https://xon.sh/", "context": "", "use_case": "interactive shell", "switched_from": "", "story": "The tilde in your PATH may not be your HOME"}, {"id": 800711377, "item_id": 50044461, "url": "https://news.ycombinator.com/item?id=50044461", "by": "malux85", "date": "2026-10-11", "stance": "recommend", "quote": "Zsh (I use this: https://ohmyz.sh/)", "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": "bash", "story": "The tilde in your PATH may not be your HOME"}, {"id": 796790288, "item_id": 49799393, "url": "https://news.ycombinator.com/item?id=49799393", "by": "ocd", "date": "2026-09-22", "stance": "recommend", "quote": "switched to zsh as default shell", "excerpt": "Perhaps, but the BSD developers do not fully invite themselves into your home and network through use of their operating system. I do appreciate however that macOS is BSD somewhere under the hood and switched to zsh as default shell (even if it was supposedly only for licensing reasons, but I believe it's the correct decision practically or legally)", "context": "", "use_case": "default shell", "switched_from": "", "story": "I said no and Apple said yes"}, {"id": 791626706, "item_id": 49476669, "url": "https://news.ycombinator.com/item?id=49476669", "by": "LoganDark", "date": "2026-08-28", "stance": "neutral", "quote": "my preferred implementation languages for things like shell scripts (zsh)", "excerpt": "Just because it doesn't materially impact task success rates does not mean it's not useful. I use that file to give my agent information about the environment (operating system, architecture, command-line utilities I have installed), as well as how to do certain things (such as using `uv` for running Python when needed). I want my agent to work how I do, so I also tell it things like my preferred version control syst", "context": "", "use_case": "shell scripts", "switched_from": "", "story": "Your AGENTS.md file doesn't do anything"}, {"id": 789044160, "item_id": 49315260, "url": "https://news.ycombinator.com/item?id=49315260", "by": "mmh0000", "date": "2026-08-15", "stance": "neutral", "quote": "I have nearly a decade of zsh history.", "excerpt": "I have nearly a decade of zsh history. Reading that article I came to the conclusion that I may have been hit by that bug in the past but I haven\u2019t noticed. Then I kept reading and the author mentions accidentally exporting HISTFILE[1] and I screamed in terror and ran to my computer as I realized a mistake I\u2019ve been making for\u2026ever. I am now both happy and sad I read this article. [1] https://github.com/stapelberg/co", "context": "", "use_case": "daily shell", "switched_from": "", "story": "Tracking down a Zsh history data loss bug"}, {"id": 788323328, "item_id": 49270208, "url": "https://news.ycombinator.com/item?id=49270208", "by": "idoubtit", "date": "2026-08-12", "stance": "neutral", "quote": "with zsh, I'd suggest hitting TAB to expand the magic into a static text", "excerpt": "Decades ago, I was taught to use `!` and Co, by a Linux user who was fond of the `sudo !!` trick. Then I switched from this implicit interpolation to explicit shortcuts, and I'm glad I did. As suggested in the FAQ at the bottom, instead of !\u2026 you can use ctrl-r. Or better, optionally type the first letters then alt-p or \"up\". It's more powerful and more extensible. Other shortcuts, like alt-., allow navigating into t", "context": "", "use_case": "shell", "switched_from": "", "story": "A shell exclamation mark is not for yelling. Be lazy"}, {"id": 784964544, "item_id": 49060284, "url": "https://news.ycombinator.com/item?id=49060284", "by": "kazinator", "date": "2026-07-26", "stance": "neutral", "quote": "zsh not only does the cat-like dumping to stdout in non-interactive mode, but it also does the redirection to the pager!!!", "excerpt": "I understand; it's just \"here are these cool, obscure things you can do with the colon\". I had no idea it was supposed to be \"here are these cool, obscure things yuo can do with the colon, carefully coded to work on numerous POSIX-like shells that are in widespread use. To me, it's \"cool\" that you can just do \"< test-file && echo exists\", on a shell whose developers haven't decided to imbue a whole bunch of new requi", "context": "", "use_case": "", "switched_from": "", "story": "A shell colon does nothing. Use it anyway."}, {"id": 784894865, "item_id": 49055929, "url": "https://news.ycombinator.com/item?id=49055929", "by": "refp", "date": "2026-07-26", "stance": "recommend", "quote": "I'm a zsh vi-mode guy - always have been, always will be", "excerpt": "DUDE! I wrote my first real `.ps1` the other day for auto-installing all dependencies needed to run a `gitea`-runner on windows for windows builds; powershell - felt like the lover I never had. And the documentation in readable comments at the top that just.. generates usable docs? Damn, damn, damn. There is a part of me that low-key wanna try that as my daily driver for a week or two. But with that said, I'm a zsh v", "context": "", "use_case": "daily shell", "switched_from": "", "story": "A shell colon does nothing. Use it anyway."}, {"id": 784890176, "item_id": 49055636, "url": "https://news.ycombinator.com/item?id=49055636", "by": "refp", "date": "2026-07-26", "stance": "neutral", "quote": "all you need to prove it is `zsh`", "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 redirection behavior", "switched_from": "", "story": "A shell colon does nothing. Use it anyway."}, {"id": 777315089, "item_id": 48582193, "url": "https://news.ycombinator.com/item?id=48582193", "by": "lanycrost", "date": "2026-06-18", "stance": "warn", "quote": "Because of the performance and stability issues I moved to fish", "excerpt": "Because of the performance and stability issues I moved to fish for 1 year and I like it even more, it's syntax, functions it's tab completions, for some reason with zsh I always had an issues, my bad, but fish work perfectly out of the box.", "context": "", "use_case": "shell", "switched_from": "", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}, {"id": 777307552, "item_id": 48581722, "url": "https://news.ycombinator.com/item?id=48581722", "by": "adrian_b", "date": "2026-06-17", "stance": "neutral", "quote": "I use a rather complicated zsh prompt", "excerpt": "Thanks. I use a rather complicated zsh prompt, complicated enough so that I could never convince bash to execute an equivalent prompt correctly, despite the fact that the features used by the prompt are supposed to be supported in bash too. (The prompt syntax is quite different in zsh and in bash.) As you say, to be able to write the prompt I had to study carefully the zsh manual. However, I consider this a minor dis", "context": "", "use_case": "shell with custom prompt", "switched_from": "bash", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}, {"id": 775216498, "item_id": 48451031, "url": "https://news.ycombinator.com/item?id=48451031", "by": "idoubtit", "date": "2026-06-08", "stance": "neutral", "quote": "my zsh config grants me a sub 5ms prompt and a sub 1ms input lag", "excerpt": "The problem with this article is that the benchmark method they use is flawed. The documentation of zshbench explains why: https://github.com/romkatv/zsh-bench Even with a low grade laptop, my zsh config grants me a sub 5ms prompt and a sub 1ms input lag, and that's far more important than the exit time. ./zsh-bench ==> benchmarking login shell of user XYZ ... creates_tty=0 has_compsys=1 has_syntax_highlighting=0 has", "context": "", "use_case": "shell", "switched_from": "", "story": "Life is too short for a slow terminal"}, {"id": 772409457, "item_id": 48275591, "url": "https://news.ycombinator.com/item?id=48275591", "by": "modinfo", "date": "2026-05-25", "stance": "recommend", "quote": "I love that he used zsh and comma with pi!", "excerpt": "This is not really a new idea, even I wrote \"how\" in rust, that just ask my local llm and after approve execute. But the idea from OP is much better! I love that he used zsh and comma with pi! this comma remind me a little bit of old irc bot, it was exactly the same flow, \", <query>\". Love it! <3 BTW, no one need $7 device to run eg. gemma4 e2b, even your phone can act as llm provider ;)", "context": "", "use_case": "shell", "switched_from": "", "story": "A Comma and a Question Mark"}, {"id": 762029491, "item_id": 47626843, "url": "https://news.ycombinator.com/item?id=47626843", "by": "chunpaiyang", "date": "2026-04-03", "stance": "neutral", "quote": "", "excerpt": "- tmux - vim: NERDTree, Gblame - zsh - tig: best way to browse git history in terminal - claud code", "context": "", "use_case": "shell", "switched_from": "", "story": "Ask HN: Which CLI tools do you use daily?"}, {"id": 760211248, "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": 755051394, "item_id": 47190712, "url": "https://news.ycombinator.com/item?id=47190712", "by": "kkfx", "date": "2026-02-27", "stance": "recommend", "quote": "generally I came back to zsh", "excerpt": "Personally, while living in Emacs (EXWM), I still can't live on eshell, the issue is \"the terminal\", too many commands are simply uncomfortable to use in eshell while run smoothly in a real terminal. I've also tried some new shells, the one I last more is xonsh, but generally I came back to zsh even if I use in general much less the shell than before thanks to Emacs, the 2D shell. Emacs completion also it's very nice", "context": "", "use_case": "shell", "switched_from": "xonsh", "story": "Eschewing Zshell for Emacs Shell (2014)"}, {"id": 745037936, "item_id": 46564871, "url": "https://news.ycombinator.com/item?id=46564871", "by": "nickjj", "date": "2026-01-10", "stance": "recommend", "quote": "When I switched to zsh 5 years ago, I went with a stock set up too.", "excerpt": "When I switched to zsh 5 years ago, I went with a stock set up too. There's quite a few things the OP's post didn't mention about shell history that I think are really important: setopt HIST_IGNORE_ALL_DUPS # Never add duplicate entries. setopt HIST_IGNORE_SPACE # Ignore commands that start with a space. setopt HIST_REDUCE_BLANKS # Remove unnecessary blank lines. It's possible to roll your own prompt that does helpfu", "context": "", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}, {"id": 745020368, "item_id": 46563773, "url": "https://news.ycombinator.com/item?id=46563773", "by": "mifydev", "date": "2026-01-10", "stance": "warn", "quote": "The problem with zsh, as with a lot of open source tools is bad defaults.", "excerpt": "The problem with zsh, as with a lot of open source tools is bad defaults. If only zsh had a better out of the box experience then OMZ wouldn't be needed. I used maintain a lot of configs, over 10 years I just keep forgetting what did I set up. I don't want to be bothered with this anymore.", "context": "", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}, {"id": 744484672, "item_id": 46530292, "url": "https://news.ycombinator.com/item?id=46530292", "by": "pksebben", "date": "2026-01-07", "stance": "recommend", "quote": "I like zsh but I also want something better.", "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", "switched_from": "", "story": "The Case for Nushell (2023)"}, {"id": 744475008, "item_id": 46529688, "url": "https://news.ycombinator.com/item?id=46529688", "by": "BadBadJellyBean", "date": "2026-01-07", "stance": "neutral", "quote": "I use zsh but only because of oh-my-zsh.", "excerpt": "I have always struggled a bit with shell replacements. I use zsh but only because of oh-my-zsh. Apart from that I always thought of shell scripts as a necessary evil for interoperability. Today you can usually expect a linux system to have bash or at least sh. That is why I do shell scripting. Nushell is usally not preinstalled on a system and so I cannot expect it. If I want to do real scripting/programming I use py", "context": "", "use_case": "shell", "switched_from": "", "story": "The Case for Nushell (2023)"}, {"id": 743806467, "item_id": 46487904, "url": "https://news.ycombinator.com/item?id=46487904", "by": "whalesalad", "date": "2026-01-04", "stance": "neutral", "quote": "I use alacritty/zsh/tmux as my terminal.", "excerpt": "I\u2019ve been using Wayland on Debian 12 since 2023. On an Apple Studio Display (5K) over thunderbolt (the built-in camera, speakers, etc work fine) I screen share and video call with Slack and Google Meet. I use alacritty/zsh/tmux as my terminal. I use chromium as my browser, vscode and sublime text as code editors. Slack, Spotify, my studio mic, my Scarlett 2i2, 10gbe networking, thunderbolt, Logitech unifying receiver", "context": "", "use_case": "shell", "switched_from": "", "story": "Can I start using Wayland in 2026?"}, {"id": 743785588, "item_id": 46486599, "url": "https://news.ycombinator.com/item?id=46486599", "by": "forgotpwd16", "date": "2026-01-04", "stance": "neutral", "quote": "i3+NixOS+urxvt+zsh+Emacs+rofi+maim+xdotool", "excerpt": "Heh, interesting seeing we use pretty much the same things, i3+NixOS+urxvt+zsh+Emacs+rofi+maim+xdotool, only differentiating in browser choice (it's Firefox for me) and (me) not using any term multiplexer. >So from my perspective, switching from this existing, flawlessly working stack (for me) to Sway only brings downsides. Kudos to Michael for even attempting it. Personally nowadays unless my working stack stops, we", "context": "", "use_case": "shell", "switched_from": "", "story": "Can I start using Wayland in 2026?"}]}