{"slug": "fish", "name": "fish", "category": "terminal", "category_name": "Terminal and shell", "description": "A user-friendly interactive command-line shell for Linux, macOS and other Unix-like systems.", "recommenders": 13, "commenters": 20, "warners": 1, "score": 12.189, "rising": -1.6, "first": "2026-01-07", "latest": "2026-10-17", "why": "Liked for working well out of the box with little configuration, with built-in autosuggestions, tab completions and syntax highlighting, and for syntax with fewer footguns than Bash.", "why_is_quote": false, "has_verdict": true, "sentiment": {"recommend": 13, "neutral": 6, "compare": 0, "warn": 1}, "spark": [0, 0, 4, 2, 0, 2, 0, 2, 1, 0, 0, 2], "listed": true, "loved": ["Good defaults", "Long-term favorite"], "caveat": "No history expansion", "short_quote": "Fish is such a wonderful shell. It\u2019s been my daily driver for many years now", "icon": true, "domain": "fishshell.com", "github_repo": null, "official_url": "https://fishshell.com/", "pricing": "open source", "aliases": ["fish", "Fish"], "verdict": [{"text": "Liked for working well out of the box with little configuration,", "cites": [{"id": 777315088, "item_id": 48582193, "url": "https://news.ycombinator.com/item?id=48582193", "by": "lanycrost", "date": "2026-06-18", "stance": "recommend", "quote": "I moved to fish for 1 year and I like it even more", "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": "zsh", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}, {"id": 754485152, "item_id": 47155322, "url": "https://news.ycombinator.com/item?id=47155322", "by": "kkl", "date": "2026-02-25", "stance": "recommend", "quote": "Fish is such a wonderful shell. It\u2019s been my daily driver for many years now", "excerpt": "Congratulations! Fish is such a wonderful shell. It\u2019s been my daily driver for many years now but I\u2019ve had a renewed appreciation for it now that I\u2019m working in several different development environments. The default fish install Just Works so well that I don\u2019t bother with trying to schlep my dotfiles around.", "context": "", "use_case": "daily shell", "switched_from": "", "story": "Fish Shell 4.0 released. Rust re write finished"}, {"id": 754232768, "item_id": 47139548, "url": "https://news.ycombinator.com/item?id=47139548", "by": "caillou", "date": "2026-02-24", "stance": "recommend", "quote": "I moved to the fish shell 5 years ago.", "excerpt": "In terms of shell, I moved to the fish shell 5 years ago. Things are so much easier. No need to a massive amount of plugins and configs, mostly works out of the box.", "context": "", "use_case": "daily shell", "switched_from": "", "story": "The Missing Semester of Your CS Education"}, {"id": 745040400, "item_id": 46565025, "url": "https://news.ycombinator.com/item?id=46565025", "by": "mikkupikku", "date": "2026-01-10", "stance": "recommend", "quote": "Exactly why I switched to fish.  Fish doesn't come preconfigured exactly how I would like, but it's close enough", "excerpt": "Exactly why I switched to fish. Fish doesn't come preconfigured exactly how I would like, but it's close enough that I just grew accustomed to fish defaults and have no trouble with it now, and no longer give any thought to shell configuration.", "context": "", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}]}, {"text": " with built-in autosuggestions, tab completions and syntax highlighting,", "cites": [{"id": 745162113, "item_id": 46572632, "url": "https://news.ycombinator.com/item?id=46572632", "by": "jadar", "date": "2026-01-10", "stance": "recommend", "quote": "now I know about `fish` and am learning there are some nice features I never had in ZSH", "excerpt": "I have been using omz for YEARS. I have practically grown up with it. I resent that I would have never noticed that it took several hundred milliseconds to load, if it were not for this discussion. I never felt the delay particularly unless I was in a very large Git repository \u2014 which is rare. On the bright side, now I know about `fish` and am learning there are some nice features I never had in ZSH (i.e. much more a", "context": "", "use_case": "shell", "switched_from": "Zsh", "story": "You probably don't need Oh My Zsh"}, {"id": 745021648, "item_id": 46563853, "url": "https://news.ycombinator.com/item?id=46563853", "by": "rukshn", "date": "2026-01-10", "stance": "recommend", "quote": "Fish has autocomplete and syntax highlighting out of the box which is quite neat", "excerpt": "I switched to fish shell with star ship. Fish has autocomplete and syntax highlighting out of the box which is quite neat and the main features I use in omgzh so fish was a safe choice for me https://ruky.me/moving-from-zsh-to-fish-nixos-darwin/", "context": "", "use_case": "shell", "switched_from": "Oh My Zsh", "story": "You probably don't need Oh My Zsh"}, {"id": 777315088, "item_id": 48582193, "url": "https://news.ycombinator.com/item?id=48582193", "by": "lanycrost", "date": "2026-06-18", "stance": "recommend", "quote": "I moved to fish for 1 year and I like it even more", "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": "zsh", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}]}, {"text": " and for syntax with fewer footguns than Bash.", "cites": [{"id": 800711376, "item_id": 50044461, "url": "https://news.ycombinator.com/item?id=50044461", "by": "malux85", "date": "2026-10-11", "stance": "recommend", "quote": "No implicit word splitting : spaces in variables won't unexpectedly become separate arguments.", "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": 777315088, "item_id": 48582193, "url": "https://news.ycombinator.com/item?id=48582193", "by": "lanycrost", "date": "2026-06-18", "stance": "recommend", "quote": "I moved to fish for 1 year and I like it even more", "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": "zsh", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}]}, {"text": " The main caveats are its lack of `!`-style history expansion", "cites": [{"id": 788332928, "item_id": 49270808, "url": "https://news.ycombinator.com/item?id=49270808", "by": "jwr", "date": "2026-08-12", "stance": "warn", "quote": "I switched to Fish recently and I continue to be annoyed by its refusal to implement this feature.", "excerpt": "I got used to doing this over many many years with the tcsh shell. I switched to Fish recently and I continue to be annoyed by its refusal to implement this feature. Yes, I tried using all the newfangled history-search thingamajigs. They all kind of work, and they all have their issues. But the !, together with in-place expansion, is something I still dearly miss.", "context": "", "use_case": "shell", "switched_from": "tcsh", "story": "A shell exclamation mark is not for yelling. Be lazy"}, {"id": 788348576, "item_id": 49271786, "url": "https://news.ycombinator.com/item?id=49271786", "by": "Fnoord", "date": "2026-08-12", "stance": "neutral", "quote": "because I use fish", "excerpt": "Oh, nice. I alias'ed it to please as well. But because I use fish, I had to do this: alias please 'sudo (history -1)'", "context": "", "use_case": "shell", "switched_from": "", "story": "A shell exclamation mark is not for yelling. Be lazy"}]}, {"text": " and that it is not POSIX-compatible.", "cites": [{"id": 783277552, "item_id": 48954847, "url": "https://news.ycombinator.com/item?id=48954847", "by": "ButlerianJihad", "date": "2026-07-17", "stance": "neutral", "quote": "fish is not POSIX-compatible, and not Bourne-compatible", "excerpt": "fish is not POSIX-compatible, and not Bourne-compatible, so I don't see how that really matters at all. I used the rc shell from plan9 for quite a while, and I wouldn't expect its syntax rules to match, either!", "context": "", "use_case": "shell", "switched_from": "", "story": "PSA about abuse of cat(1) command. Don't abuse cats"}]}], "praise": [{"label": "Good defaults", "summary": "Commenters say fish mostly works out of the box, so they rarely need plugins, configs or dotfiles.", "quotes": [{"id": 754485152, "item_id": 47155322, "url": "https://news.ycombinator.com/item?id=47155322", "by": "kkl", "date": "2026-02-25", "stance": "recommend", "quote": "Fish is such a wonderful shell. It\u2019s been my daily driver for many years now", "excerpt": "Congratulations! Fish is such a wonderful shell. It\u2019s been my daily driver for many years now but I\u2019ve had a renewed appreciation for it now that I\u2019m working in several different development environments. The default fish install Just Works so well that I don\u2019t bother with trying to schlep my dotfiles around.", "context": "", "use_case": "daily shell", "switched_from": "", "story": "Fish Shell 4.0 released. Rust re write finished"}, {"id": 754232768, "item_id": 47139548, "url": "https://news.ycombinator.com/item?id=47139548", "by": "caillou", "date": "2026-02-24", "stance": "recommend", "quote": "I moved to the fish shell 5 years ago.", "excerpt": "In terms of shell, I moved to the fish shell 5 years ago. Things are so much easier. No need to a massive amount of plugins and configs, mostly works out of the box.", "context": "", "use_case": "daily shell", "switched_from": "", "story": "The Missing Semester of Your CS Education"}, {"id": 745040400, "item_id": 46565025, "url": "https://news.ycombinator.com/item?id=46565025", "by": "mikkupikku", "date": "2026-01-10", "stance": "recommend", "quote": "Exactly why I switched to fish.  Fish doesn't come preconfigured exactly how I would like, but it's close enough", "excerpt": "Exactly why I switched to fish. Fish doesn't come preconfigured exactly how I would like, but it's close enough that I just grew accustomed to fish defaults and have no trouble with it now, and no longer give any thought to shell configuration.", "context": "", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}]}, {"label": "Long-term favorite", "summary": "Several commenters have used it as their daily driver for years and strongly prefer it to Bash and Zsh.", "quotes": [{"id": 754485152, "item_id": 47155322, "url": "https://news.ycombinator.com/item?id=47155322", "by": "kkl", "date": "2026-02-25", "stance": "recommend", "quote": "Fish is such a wonderful shell. It\u2019s been my daily driver for many years now", "excerpt": "Congratulations! Fish is such a wonderful shell. It\u2019s been my daily driver for many years now but I\u2019ve had a renewed appreciation for it now that I\u2019m working in several different development environments. The default fish install Just Works so well that I don\u2019t bother with trying to schlep my dotfiles around.", "context": "", "use_case": "daily shell", "switched_from": "", "story": "Fish Shell 4.0 released. Rust re write finished"}, {"id": 761731184, "item_id": 47608199, "url": "https://news.ycombinator.com/item?id=47608199", "by": "asxndu", "date": "2026-04-01", "stance": "recommend", "quote": "I love it so much that I pity people that use Bash, Zsh.", "excerpt": "It's amazing, how rarely people talk about fish (https://fishshell.com/) I love it so much that I pity people that use Bash, Zsh.", "context": "", "use_case": "shell", "switched_from": "", "story": "Ask HN: What dev tools do you rely on that nobody talks about?"}, {"id": 777315088, "item_id": 48582193, "url": "https://news.ycombinator.com/item?id=48582193", "by": "lanycrost", "date": "2026-06-18", "stance": "recommend", "quote": "I moved to fish for 1 year and I like it even more", "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": "zsh", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}]}, {"label": "Built-in completions", "summary": "Autosuggestions, tab completions and syntax highlighting come built in, without Oh My Zsh-style add-ons.", "quotes": [{"id": 745021648, "item_id": 46563853, "url": "https://news.ycombinator.com/item?id=46563853", "by": "rukshn", "date": "2026-01-10", "stance": "recommend", "quote": "Fish has autocomplete and syntax highlighting out of the box which is quite neat", "excerpt": "I switched to fish shell with star ship. Fish has autocomplete and syntax highlighting out of the box which is quite neat and the main features I use in omgzh so fish was a safe choice for me https://ruky.me/moving-from-zsh-to-fish-nixos-darwin/", "context": "", "use_case": "shell", "switched_from": "Oh My Zsh", "story": "You probably don't need Oh My Zsh"}, {"id": 745162113, "item_id": 46572632, "url": "https://news.ycombinator.com/item?id=46572632", "by": "jadar", "date": "2026-01-10", "stance": "recommend", "quote": "now I know about `fish` and am learning there are some nice features I never had in ZSH", "excerpt": "I have been using omz for YEARS. I have practically grown up with it. I resent that I would have never noticed that it took several hundred milliseconds to load, if it were not for this discussion. I never felt the delay particularly unless I was in a very large Git repository \u2014 which is rare. On the bright side, now I know about `fish` and am learning there are some nice features I never had in ZSH (i.e. much more a", "context": "", "use_case": "shell", "switched_from": "Zsh", "story": "You probably don't need Oh My Zsh"}, {"id": 777315088, "item_id": 48582193, "url": "https://news.ycombinator.com/item?id=48582193", "by": "lanycrost", "date": "2026-06-18", "stance": "recommend", "quote": "I moved to fish for 1 year and I like it even more", "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": "zsh", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}]}, {"label": "Saner syntax", "summary": "Commenters praise its syntax and functions, and say variables are not split into words unexpectedly.", "quotes": [{"id": 800711376, "item_id": 50044461, "url": "https://news.ycombinator.com/item?id=50044461", "by": "malux85", "date": "2026-10-11", "stance": "recommend", "quote": "No implicit word splitting : spaces in variables won't unexpectedly become separate arguments.", "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": 777315088, "item_id": 48582193, "url": "https://news.ycombinator.com/item?id=48582193", "by": "lanycrost", "date": "2026-06-18", "stance": "recommend", "quote": "I moved to fish for 1 year and I like it even more", "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": "zsh", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}, {"id": 744417440, "item_id": 46526090, "url": "https://news.ycombinator.com/item?id=46526090", "by": "qrobit", "date": "2026-01-07", "stance": "recommend", "quote": "For most scripts I use fish, which is my preferred interactive shell too.", "excerpt": "I wanted to say Haskell with shh[^1] and stack's or nix's shebangs[^2][^3], but interpreted haskell is not particularly fast. Also I think a Python script is reasonable if you use a type-checker with full type annotations, although they are not a silver bullet. For most scripts I use fish, which is my preferred interactive shell too. [1]: https://hackage.haskell.org/package/shh [2]: https://docs.haskellstack.org/en/v", "context": "", "use_case": "scripting and interactive shell", "switched_from": "", "story": "Stop Designing Languages. Write Libraries Instead (2016)"}]}, {"label": "User experience", "summary": "Commenters value its careful focus on interactive use, even on servers.", "quotes": [{"id": 781744464, "item_id": 48859029, "url": "https://news.ycombinator.com/item?id=48859029", "by": "jcgl", "date": "2026-07-10", "stance": "recommend", "quote": "I use fish as my regular shell. Big fan of fish's careful focus on user experience", "excerpt": "Great example! How do you like using elvish? Even though I am a proponent of structured data and like PowerShell a lot (mentioned in a nearby comment of mine), I use fish as my regular shell. Big fan of fish's careful focus on user experience, but would be open to trying something structured.", "context": "", "use_case": "regular shell", "switched_from": "", "story": "Interview with Mitchell Hashimoto about Ghostty and Zig"}, {"id": 800513680, "item_id": 50032105, "url": "https://news.ycombinator.com/item?id=50032105", "by": "wazzaps", "date": "2026-10-10", "stance": "recommend", "quote": "If I'm manually running commands on a server it means I'll likely use it interactively a lot, might as well not suffer", "excerpt": "apt install fish && chsh -s /usr/bin/fish && curl https://github.com/wazzaps.keys >> ~/.ssh/authorized_keys If I'm manually running commands on a server it means I'll likely use it interactively a lot, might as well not suffer", "context": "", "use_case": "interactive shell on servers", "switched_from": "", "story": "Ask HN: Whats the first command you run on a new server?"}]}], "caveats": [{"label": "No history expansion", "summary": "It does not support `!`-style history expansion, so tcsh and Bash users need workarounds.", "quotes": [{"id": 788332928, "item_id": 49270808, "url": "https://news.ycombinator.com/item?id=49270808", "by": "jwr", "date": "2026-08-12", "stance": "warn", "quote": "I switched to Fish recently and I continue to be annoyed by its refusal to implement this feature.", "excerpt": "I got used to doing this over many many years with the tcsh shell. I switched to Fish recently and I continue to be annoyed by its refusal to implement this feature. Yes, I tried using all the newfangled history-search thingamajigs. They all kind of work, and they all have their issues. But the !, together with in-place expansion, is something I still dearly miss.", "context": "", "use_case": "shell", "switched_from": "tcsh", "story": "A shell exclamation mark is not for yelling. Be lazy"}, {"id": 788348576, "item_id": 49271786, "url": "https://news.ycombinator.com/item?id=49271786", "by": "Fnoord", "date": "2026-08-12", "stance": "neutral", "quote": "because I use fish", "excerpt": "Oh, nice. I alias'ed it to please as well. But because I use fish, I had to do this: alias please 'sudo (history -1)'", "context": "", "use_case": "shell", "switched_from": "", "story": "A shell exclamation mark is not for yelling. Be lazy"}]}, {"label": "Not POSIX", "summary": "Fish is not POSIX- or Bourne-compatible, so its syntax differs from standard shells.", "quotes": [{"id": 783277552, "item_id": 48954847, "url": "https://news.ycombinator.com/item?id=48954847", "by": "ButlerianJihad", "date": "2026-07-17", "stance": "neutral", "quote": "fish is not POSIX-compatible, and not Bourne-compatible", "excerpt": "fish is not POSIX-compatible, and not Bourne-compatible, so I don't see how that really matters at all. I used the rc shell from plan9 for quite a while, and I wouldn't expect its syntax rules to match, either!", "context": "", "use_case": "shell", "switched_from": "", "story": "PSA about abuse of cat(1) command. Don't abuse cats"}]}, {"label": "Imperfect defaults", "summary": "One commenter says the defaults were not exactly what they wanted, though they adapted to them.", "quotes": [{"id": 745040400, "item_id": 46565025, "url": "https://news.ycombinator.com/item?id=46565025", "by": "mikkupikku", "date": "2026-01-10", "stance": "recommend", "quote": "Exactly why I switched to fish.  Fish doesn't come preconfigured exactly how I would like, but it's close enough", "excerpt": "Exactly why I switched to fish. Fish doesn't come preconfigured exactly how I would like, but it's close enough that I just grew accustomed to fish defaults and have no trouble with it now, and no longer give any thought to shell configuration.", "context": "", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}]}], "who": [], "tags": ["for Zsh switchers", "for Bash switchers", "for scripting", "for servers"], "use_cases": ["shell", "daily shell", "desktop file management", "interactive shell on servers", "regular shell", "default shell"], "compared": [{"slug": "zsh", "name": "zsh", "co": 6, "switched_from": 2, "switched_to": 0}, {"slug": "bash", "name": "Bash", "co": 4, "switched_from": 1, "switched_to": 0}, {"slug": "oh-my-zsh", "name": "Oh My Zsh", "co": 3, "switched_from": 1, "switched_to": 0}, {"slug": "tcsh", "name": "tcsh", "co": 1, "switched_from": 1, "switched_to": 0}, {"slug": "tmux", "name": "tmux", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=46562790", "title": "You probably don't need Oh My Zsh", "mentions": 3}, {"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=50115354", "title": "The history of development of Norton Commander (2011)", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=50042425", "title": "The tilde in your PATH may not be your HOME", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=50027624", "title": "Ask HN: Whats the first command you run on a new server?", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48953719", "title": "PSA about abuse of cat(1) command. Don't abuse cats", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {"recommend": 4, "neutral": 2}, "2026-02": {"recommend": 2}, "2026-03": {}, "2026-04": {"recommend": 2, "neutral": 1}, "2026-05": {}, "2026-06": {"recommend": 2}, "2026-07": {"recommend": 1, "neutral": 1}, "2026-08": {"warn": 1, "neutral": 1}, "2026-09": {}, "2026-10": {"recommend": 2, "neutral": 1}}, "quotes": [{"id": 802143329, "item_id": 50133958, "url": "https://news.ycombinator.com/item?id=50133958", "by": "networked", "date": "2026-10-17", "stance": "neutral", "quote": "shifted towards fish + vidir", "excerpt": "I am. My desktop computing has shifted towards fish + vidir, but I use Total Commander for Android on my phone all the time. I have wondered why. What is the difference? Is it just the input method (easier to type shell commands on a physical keyboard)? Well, I don't think so. The orthodox file manager was created for copying files between two disks. File management on my phone still follows the same pattern: copy or", "context": "", "use_case": "desktop file management", "switched_from": "", "story": "The history of development of Norton Commander (2011)"}, {"id": 800711376, "item_id": 50044461, "url": "https://news.ycombinator.com/item?id=50044461", "by": "malux85", "date": "2026-10-11", "stance": "recommend", "quote": "No implicit word splitting : spaces in variables won't unexpectedly become separate arguments.", "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": 800513680, "item_id": 50032105, "url": "https://news.ycombinator.com/item?id=50032105", "by": "wazzaps", "date": "2026-10-10", "stance": "recommend", "quote": "If I'm manually running commands on a server it means I'll likely use it interactively a lot, might as well not suffer", "excerpt": "apt install fish && chsh -s /usr/bin/fish && curl https://github.com/wazzaps.keys >> ~/.ssh/authorized_keys If I'm manually running commands on a server it means I'll likely use it interactively a lot, might as well not suffer", "context": "", "use_case": "interactive shell on servers", "switched_from": "", "story": "Ask HN: Whats the first command you run on a new server?"}, {"id": 788348576, "item_id": 49271786, "url": "https://news.ycombinator.com/item?id=49271786", "by": "Fnoord", "date": "2026-08-12", "stance": "neutral", "quote": "because I use fish", "excerpt": "Oh, nice. I alias'ed it to please as well. But because I use fish, I had to do this: alias please 'sudo (history -1)'", "context": "", "use_case": "shell", "switched_from": "", "story": "A shell exclamation mark is not for yelling. Be lazy"}, {"id": 788332928, "item_id": 49270808, "url": "https://news.ycombinator.com/item?id=49270808", "by": "jwr", "date": "2026-08-12", "stance": "warn", "quote": "I switched to Fish recently and I continue to be annoyed by its refusal to implement this feature.", "excerpt": "I got used to doing this over many many years with the tcsh shell. I switched to Fish recently and I continue to be annoyed by its refusal to implement this feature. Yes, I tried using all the newfangled history-search thingamajigs. They all kind of work, and they all have their issues. But the !, together with in-place expansion, is something I still dearly miss.", "context": "", "use_case": "shell", "switched_from": "tcsh", "story": "A shell exclamation mark is not for yelling. Be lazy"}, {"id": 783277552, "item_id": 48954847, "url": "https://news.ycombinator.com/item?id=48954847", "by": "ButlerianJihad", "date": "2026-07-17", "stance": "neutral", "quote": "fish is not POSIX-compatible, and not Bourne-compatible", "excerpt": "fish is not POSIX-compatible, and not Bourne-compatible, so I don't see how that really matters at all. I used the rc shell from plan9 for quite a while, and I wouldn't expect its syntax rules to match, either!", "context": "", "use_case": "shell", "switched_from": "", "story": "PSA about abuse of cat(1) command. Don't abuse cats"}, {"id": 781744464, "item_id": 48859029, "url": "https://news.ycombinator.com/item?id=48859029", "by": "jcgl", "date": "2026-07-10", "stance": "recommend", "quote": "I use fish as my regular shell. Big fan of fish's careful focus on user experience", "excerpt": "Great example! How do you like using elvish? Even though I am a proponent of structured data and like PowerShell a lot (mentioned in a nearby comment of mine), I use fish as my regular shell. Big fan of fish's careful focus on user experience, but would be open to trying something structured.", "context": "", "use_case": "regular shell", "switched_from": "", "story": "Interview with Mitchell Hashimoto about Ghostty and Zig"}, {"id": 777315088, "item_id": 48582193, "url": "https://news.ycombinator.com/item?id=48582193", "by": "lanycrost", "date": "2026-06-18", "stance": "recommend", "quote": "I moved to fish for 1 year and I like it even more", "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": "zsh", "story": "Bringing down my ZSH load times from ~3.1s to ~230ms"}, {"id": 775153328, "item_id": 48447083, "url": "https://news.ycombinator.com/item?id=48447083", "by": "maherbeg", "date": "2026-06-08", "stance": "recommend", "quote": "I use fish shell and have done a bunch of optimization around async git statuses too.", "excerpt": "Great post! There are some neat tricks around completion initing that I'll have to grab. I use fish shell and have done a bunch of optimization around async git statuses too.", "context": "", "use_case": "shell", "switched_from": "", "story": "Life is too short for a slow terminal"}, {"id": 764201954, "item_id": 47762622, "url": "https://news.ycombinator.com/item?id=47762622", "by": "ramon156", "date": "2026-04-14", "stance": "neutral", "quote": "plays nicely with my setup of fish+alac", "excerpt": "I love that most tmux features are programmatic and unix-oriented. > # reload config file (change file location to your the tmux.conf you want to use) > bind r source-file ~/.tmux.conf Just seems fun. That said, I still use zellij. I like the scroll info, the default bindings, and the fact it plays nicely with my setup of fish+alac. I might swap alacritty with ghostty at some point, but this works for me.", "context": "", "use_case": "shell", "switched_from": "", "story": "Make Tmux Pretty and Usable"}, {"id": 762176272, "item_id": 47636017, "url": "https://news.ycombinator.com/item?id=47636017", "by": "Curiositry", "date": "2026-04-03", "stance": "recommend", "quote": "Fish, zoxide, tmux, helix, ripgrep, fd-find, htop. There are many more, but these are the ones that I enjoy using.", "excerpt": "Fish, zoxide, tmux, helix, ripgrep, fd-find, htop. There are many more, but these are the ones that I enjoy using. (Other than tmux.)", "context": "", "use_case": "daily shell", "switched_from": "", "story": "Ask HN: Which CLI tools do you use daily?"}, {"id": 761731184, "item_id": 47608199, "url": "https://news.ycombinator.com/item?id=47608199", "by": "asxndu", "date": "2026-04-01", "stance": "recommend", "quote": "I love it so much that I pity people that use Bash, Zsh.", "excerpt": "It's amazing, how rarely people talk about fish (https://fishshell.com/) I love it so much that I pity people that use Bash, Zsh.", "context": "", "use_case": "shell", "switched_from": "", "story": "Ask HN: What dev tools do you rely on that nobody talks about?"}, {"id": 754485152, "item_id": 47155322, "url": "https://news.ycombinator.com/item?id=47155322", "by": "kkl", "date": "2026-02-25", "stance": "recommend", "quote": "Fish is such a wonderful shell. It\u2019s been my daily driver for many years now", "excerpt": "Congratulations! Fish is such a wonderful shell. It\u2019s been my daily driver for many years now but I\u2019ve had a renewed appreciation for it now that I\u2019m working in several different development environments. The default fish install Just Works so well that I don\u2019t bother with trying to schlep my dotfiles around.", "context": "", "use_case": "daily shell", "switched_from": "", "story": "Fish Shell 4.0 released. Rust re write finished"}, {"id": 754232768, "item_id": 47139548, "url": "https://news.ycombinator.com/item?id=47139548", "by": "caillou", "date": "2026-02-24", "stance": "recommend", "quote": "I moved to the fish shell 5 years ago.", "excerpt": "In terms of shell, I moved to the fish shell 5 years ago. Things are so much easier. No need to a massive amount of plugins and configs, mostly works out of the box.", "context": "", "use_case": "daily shell", "switched_from": "", "story": "The Missing Semester of Your CS Education"}, {"id": 746432464, "item_id": 46652029, "url": "https://news.ycombinator.com/item?id=46652029", "by": "friedtofu", "date": "2026-01-16", "stance": "neutral", "quote": "I do use fish as my default shell.", "excerpt": "Hey HN! Check out this vibe-coded shell script that Claude Opus one-shot that does the same thing(Pretty CrAzY!!!). This is a fish shell function but you can probably get claude code to convert it to bash or zsh function STFU #alsa records incoming audio from the default input device for 2 seconds arecord --duration 2 echo.wav #alsa plays back the echo.wav of the recorded audio file aplay echo.wav #Ctrl+C when the ta", "context": "", "use_case": "default shell", "switched_from": "", "story": "STFU"}, {"id": 745184417, "item_id": 46574026, "url": "https://news.ycombinator.com/item?id=46574026", "by": "phelm", "date": "2026-01-11", "stance": "neutral", "quote": "I use fish on my local (mac + homebrew) machine", "excerpt": "This looks great, i've been wanting a dev sandbox that doesn't run the risk of costing a lot if I forget to turn it off. I had a few issues 1. manpath: can't set the locale; make sure $LC_* and $LANG are correct suspect this is due to it inheriting locale from my local machine? easy to get around with some updates to .bashrc 2. the $SHELL environment in my sprite is `/opt/homebrew/bin/fish` I use fish on my local (ma", "context": "", "use_case": "shell", "switched_from": "", "story": "Code and Let Live"}, {"id": 745162113, "item_id": 46572632, "url": "https://news.ycombinator.com/item?id=46572632", "by": "jadar", "date": "2026-01-10", "stance": "recommend", "quote": "now I know about `fish` and am learning there are some nice features I never had in ZSH", "excerpt": "I have been using omz for YEARS. I have practically grown up with it. I resent that I would have never noticed that it took several hundred milliseconds to load, if it were not for this discussion. I never felt the delay particularly unless I was in a very large Git repository \u2014 which is rare. On the bright side, now I know about `fish` and am learning there are some nice features I never had in ZSH (i.e. much more a", "context": "", "use_case": "shell", "switched_from": "Zsh", "story": "You probably don't need Oh My Zsh"}, {"id": 745040400, "item_id": 46565025, "url": "https://news.ycombinator.com/item?id=46565025", "by": "mikkupikku", "date": "2026-01-10", "stance": "recommend", "quote": "Exactly why I switched to fish.  Fish doesn't come preconfigured exactly how I would like, but it's close enough", "excerpt": "Exactly why I switched to fish. Fish doesn't come preconfigured exactly how I would like, but it's close enough that I just grew accustomed to fish defaults and have no trouble with it now, and no longer give any thought to shell configuration.", "context": "", "use_case": "shell", "switched_from": "", "story": "You probably don't need Oh My Zsh"}, {"id": 745021648, "item_id": 46563853, "url": "https://news.ycombinator.com/item?id=46563853", "by": "rukshn", "date": "2026-01-10", "stance": "recommend", "quote": "Fish has autocomplete and syntax highlighting out of the box which is quite neat", "excerpt": "I switched to fish shell with star ship. Fish has autocomplete and syntax highlighting out of the box which is quite neat and the main features I use in omgzh so fish was a safe choice for me https://ruky.me/moving-from-zsh-to-fish-nixos-darwin/", "context": "", "use_case": "shell", "switched_from": "Oh My Zsh", "story": "You probably don't need Oh My Zsh"}, {"id": 744417440, "item_id": 46526090, "url": "https://news.ycombinator.com/item?id=46526090", "by": "qrobit", "date": "2026-01-07", "stance": "recommend", "quote": "For most scripts I use fish, which is my preferred interactive shell too.", "excerpt": "I wanted to say Haskell with shh[^1] and stack's or nix's shebangs[^2][^3], but interpreted haskell is not particularly fast. Also I think a Python script is reasonable if you use a type-checker with full type annotations, although they are not a silver bullet. For most scripts I use fish, which is my preferred interactive shell too. [1]: https://hackage.haskell.org/package/shh [2]: https://docs.haskellstack.org/en/v", "context": "", "use_case": "scripting and interactive shell", "switched_from": "", "story": "Stop Designing Languages. Write Libraries Instead (2016)"}]}