[HN Gopher] The fish shell is amazing ___________________________________________________________________ The fish shell is amazing Author : RMPR Score : 279 points Date : 2021-11-25 13:58 UTC (9 hours ago) (HTM) web link (rmpr.xyz) (TXT) w3m dump (rmpr.xyz) | iamevn wrote: | I've found fish to be absolutely wonderful for shell scripting. I | can throw together a loop or a function with the sort of | confidence I never could have in bash. | peterhil wrote: | Have you tried Oil Shell? http://www.oilshell.org/ | sigmonsays wrote: | I've got way too many years of bash under my belt to invest in | another shell. I gave oil shell a solid look and decided to not | use it. While that may sound wrong, I dont see oil shell having | enough features that are different enough to sway people over. | I can't think of the saying here, but essentially its not | disruptive in the shell space. | | Also, it's just shell. By the time I end up with a complicated | shell script, i've rewritten it in go, python, etc. | | This is just my two cents, if I see more people talking about | and using oil shell, I may reconsider. | opk wrote: | I've not tried for a while but just getting that to even | compile was a nightmare. It seemed to be a fork of the Python 2 | code base. They've done the right thing by having a POSIX | compatible layer but I completely disagree with their idea of | what is wrong with the existing Bourne syntax and needs | changing. An interactive shell needs to keep special characters | to a minimum and stick to commands as the basic unit on which | things are built. Zsh is already able to correct many of the | worst elements of the Bourne syntax. | xhevahir wrote: | Can anyone explain why getting similar functionality in zsh is | such a PITA? Every time I've tried to get smart-autocomplete | history stuff working in it I've given up. Is it because the | community is much more fragmented? | jordiburgos wrote: | Not for me, it breaks the .sh scripts and have to be rewritten. | binarysneaker wrote: | +1. What's the point of a great shell, if I can't run the | millions (!!) of existing scripts without refactoring them?! | Zsh does the autocompletion just as well, so I'll stick with | that. | thrwyoilarticle wrote: | Here's how you run POSIX code inside a fish shell: | bash | boudin wrote: | You don't need to rewrite any script as long as your scripts | have the correct shebang, those scripts works perfectly. | | I would strongly not advise to make it the default shell though | as this can lead to issues. The way I use it is to have bash as | my main shell but my .bashrc starting fish if it's not started | explicitly from bash: (it's a trick form arch wiki) | | if [[ $(ps --no-header --pid=$PPID --format=cmd) != "fish" ]] | then exec fish fi | | I've been using fish for a long time with this setup and never | encountered an issue. | pxc wrote: | > I would strongly not advise to make it the default shell | though as this can lead to issues. | | I've heard this a lot, but I've been using Fish as my login | shell for many years, and it's really not a problem | | I think maybe some vim plugins call out to your $SHELL or | something, but assume that it's bash-like? but I've never run | into a serious issue with just using Fish as my login shell | boudin wrote: | I don't remember the root cause as it was a while ago now, | but in my case I couldn't login on a TTY because of that. | pxc wrote: | That would be a nightmare for sure. I can't blame you for | being cautioned by an experience like that. | | I've been running Fish as my login shell for almost 10 | years now, on Linux and then additionally for ~4 years | for intermittent macOS usage (only at work) without | issue. | | I don't really like launching Fish from ~/.bash_profile | because or similar because I don't like having to type | `exit` twice to exit, and `exec`ing into Fish leaves you | in one shell but with your $SHELL variable set to | another. | | But if that works for you, more power to ya, and it's | good for Fish users to know that that's an option if they | run into issues using Fish as a login shell. | boudin wrote: | Now that you say that, that's funny as I do not have to | exit twice. I don't know why though as it seems that it | should be the case. | pxc wrote: | Does your profile call `exec fish -i` rather than just | `fish -i`? In that case, you'll only exit once :) | | From the `exec` manual: If exec is | specified with command, it shall replace the shell | with command without creating a new process. If arguments | are specified, they shall be arguments to | command. Redirection affects the current | shell execution environment. | | https://man7.org/linux/man-pages/man1/exec.1p.html | 2pEXgD0fZ5cF wrote: | > it breaks the .sh scripts | | What? No it doesn't. Shebang exists for a reason, and you | should ALWAYS use it anyway, fish or not. | dimator wrote: | It's not intended to run .sh scripts though. This is line | saying python breaks .pl scripts. | ayushnix wrote: | I can't think of a single reason why you'd need to rewrite your | POSIX sh or bash scripts to be able to use Fish. The | `#!/bin/sh` shebang is there for a reason. | vander_elst wrote: | Vi mode was not good enough: first thing I do in a new shell is | `set -o vi` and then try to do simple things: replace parts of | words, copy/paste, search history. Fish in my experience was way | worse than zsh and bash. Maybe things changed in the meantime? | stardenburden wrote: | > my grandma was afraid of Linux, until I showed her that fish | can autocomplete | | Unknown user on discord | fouronnes3 wrote: | I started a new job recently, and I've been thinking about | terminals and shells. I love a well configured modern env, but I | can't be bothered spending the literal HOURS you need to setup | everything... zsh, zsh plugins, fzf, fzf plugins, fd, dot bare, | patched fonts, 24 bit terminal color, temrinal color theme, | binutils color theme, powerline, diff-so-fancy... I get that the | devil is in the details, but come on, can I just have a single | "terminal environnement distribution" with sensible defaults and | that's it. Something like SpaceMacs/SpaceVim but for all that. I | don't want to spend the time configuring and maintaining this | wonderful pile of obsolete-and-yet-somehow-still-the-best-we-got | technology. | colelyman wrote: | Have you tried https://ohmyz.sh/ ? It is the closest thing to | SpaceMacs/SpaceVim for ZSH that I know of. | anamexis wrote: | If oh my zsh is Spacemacs, then prezto is Doom Emacs: | https://github.com/sorin-ionescu/prezto | peakaboo wrote: | Just synk your dot files with your config and a readme for what | you need to install. Getting my shell up on a new computer is | very fast because of this approach. | mongol wrote: | I agree with you here. I am like a terminal nomad, I have of | course my own computer but there are so many other computers I | log in to over the course of my career. They usually have bash | and I have learned to just like that. I don't want to maintain | one habit for my pet computer, and another when I am a nomad. | pm90 wrote: | This is why most people have a dotfiles repo in their GitHub. | Barrin92 wrote: | it's not such a trivial thing even if you manage dotfiles | because a lot of things still break between different | environments, different operating systems, don't work with | new releases, rely on some folder structure that changes, | etc, it still requires fiddling. | | Of course you can get even more involved and manage your | dotfiles with ansible or something but the advantage of a | tool like fish is that it's almost perfectly usable out of | the box. More config files will always increase the chance | for things breaking. | BugsJustFindMe wrote: | > _most people have a dotfiles repo_ | | Most people do not have a dotfiles repo. | Aloha wrote: | Most people do not even have a github. | ilaksh wrote: | I stopped using patched fonts because of that. And I never felt | like 24 bit terminal colors was necessary. You can just install | fish and then the fisher plugin manager and then install a | theme/prompt plugin. | jkelleyrtp wrote: | I use Powerlevel10k + ohmyzsh + Fira code + and the first | google entry to "make zsh like fish". Usually takes me about 10 | minutes to get set up in a new environment. | | https://gist.github.com/abhigenie92/a907cdf8a474aa6b569ebe89... | the_duke wrote: | That's exactly why I use fish. | | The default setup is pretty much perfect for what I want. My | only additions are fzf for history search, a bunch of aliases | and Starship for informative status lines. | donio wrote: | zsh has a short form for for loops too: for i | in *.pdf; echo $i | | Shorter than the fish version. Does that mean that it's a better | shell then? | oakmad wrote: | Anyone else read that as "The fish smell is amazing"? | beermonster wrote: | Is there anyone who can provide a simple summary for bash v zsh | vs fish? Maybe I'm lazy but I've just stuck with bash for.. well | since ever. Maybe it's time to try something new but then if it | ain't broke... anyway would be interested in what things it does | that I never knew I needed or things which just make life | simpler/easier. | bobbylarrybobby wrote: | https://fishshell.com/docs/current/fish_for_bash_users.html#... | emilecantin wrote: | Autocomplete is much better. For example, just typing "y" | displays "arn start" in gray _after_ my cursor. I can then | refine my command, or use right-arrow to accept the suggestion. | | And this is just one example; fish is full of small usability | touches like that. | | If you need to run a bash script, `bash the_script.sh` still | works | mikojan wrote: | Of course you could always just do ctrl+r and cycle through | and refine suggestions in bash | pxc wrote: | The Fish suggestion the GP is describing isn't based on | history, although it also autocompletes from commands in | your history that way. That's part of the baseline | autocompletion functionality of the whole shell, for all | command names, local files, etc. | notfed wrote: | Zsh does this too...but you have to configure zsh- | autosuggestions. | | The difference is that fish does this of the box with no | configuration. | err4nt wrote: | I've been happy with Fish shell for years! | | Yes, I could fiddle and twiddle with settings and configure a | nicer shell, but Fish on its default settings on any OS just | makes things smooth and easy! | aquajet wrote: | Is there a reason fish isn't posix compliant? From my experience | (which is rudimentary tbf) there are only detriments due to the | lack of sh scripts not working out of the box. | akho wrote: | The reason is that POSIX shells are ugly and stupid, and fish | syntax fixes (some of the) fundamental errors made in Bourne | shell. Things like "${args[@]}" and other quoting and array- | expansion syntaxes should not exist. Subshells are difficult | and surprising. Weird keywords (esac) are weird. | | Note how Plan 9 rc is also not POSIX. | | Shell scripts have shebangs and work. | dang wrote: | Ok, let's do this. Past related threads: | | _Fish shell_ - https://news.ycombinator.com/item?id=27180420 - | May 2021 (118 comments) | | _Fish Shell 3.2_ - https://news.ycombinator.com/item?id=26302678 | - March 2021 (128 comments) | | _Fish is not operational on a VT220 terminal (2015)_ - | https://news.ycombinator.com/item?id=25526237 - Dec 2020 (113 | comments) | | _New Features in the Fish Shell_ - | https://news.ycombinator.com/item?id=24631138 - Sept 2020 (138 | comments) | | _Dolphins learn from their peers to use empty shells to catch | fish_ - https://news.ycombinator.com/item?id=23660910 - June 2020 | (8 comments) (<-- just kidding) | | _Fish: A command line shell for the 90s_ - | https://news.ycombinator.com/item?id=21361696 - Oct 2019 (83 | comments) | | _Fish shell 3.0_ - https://news.ycombinator.com/item?id=18776765 | - Dec 2018 (220 comments) | | _Fish: A user-friendly command line shell for macOS, Linux, etc_ | - https://news.ycombinator.com/item?id=15910897 - Dec 2017 (204 | comments) | | _Fish (Shell) for a Week_ - | https://news.ycombinator.com/item?id=14422672 - May 2017 (2 | comments) | | _The fish shell is awesome_ - | https://news.ycombinator.com/item?id=14179081 - April 2017 (7 | comments) | | _Fish Shell Design Principles_ - | https://news.ycombinator.com/item?id=11102941 - Feb 2016 (71 | comments) | | _Fish shell 2.2_ - https://news.ycombinator.com/item?id=9873090 | - July 2015 (70 comments) | | _Fish shell_ - https://news.ycombinator.com/item?id=9566441 - | May 2015 (182 comments) | | _FISH Shell: A dynamic shell_ - | https://news.ycombinator.com/item?id=8783150 - Dec 2014 (3 | comments) | | _Fish shell 2.1_ - https://news.ycombinator.com/item?id=6626635 | - Oct 2013 (151 comments) | | _fish shell_ - https://news.ycombinator.com/item?id=6224524 - | Aug 2013 (75 comments) | | _Fish shell 2.0_ - https://news.ycombinator.com/item?id=5723235 | - May 2013 (175 comments) | | _Fish 2.0 shell beta_ - | https://news.ycombinator.com/item?id=5567639 - April 2013 (56 | comments) | | _Fish: Finally, a command line shell for the 90s_ - | https://news.ycombinator.com/item?id=4073162 - June 2012 (146 | comments) | | _Fish sucks (but your shell sucks more)_ - | https://news.ycombinator.com/item?id=2031110 - Dec 2010 (60 | comments) | | _Fish - The friendly interactive shell_ - | https://news.ycombinator.com/item?id=820677 - Sept 2009 (16 | comments) | | _Fish Shell: A User-Friendly Shell or Like a Heavily Customized | zsh_ - https://news.ycombinator.com/item?id=811113 - Sept 2009 (8 | comments) | pxc wrote: | Fish is wonderful! I'm glad it gets this repeated attention :D | xvf22 wrote: | I seriously hope you have automation to pull these in! Thanks! | [deleted] | als0 wrote: | > when you type something invalid it's red, blue when not | | Does anyone know how to do something like this with Bash? | rgoulter wrote: | Not restricted to fish shell, but I can further recommend | starship.rs as a prompt, and using fzf to search through command | history. | pletnes wrote: | Fzf can search virtually anything, since you can pipe output | into/through it. It's fantastic. | kbd wrote: | As another commenter pointed out, while Fish has some nice out- | of-the-box features, they're all achievable in Zsh with a few | lines of plugins. And did you know Zsh has a short for loop? | Along with fantastic plugins like fzf-tab, I don't see a reason | to use anything else right now. | | Though, I'm keeping a very interested eye on Nu shell. They're | doing a lot of stuff right, and I expect it will become a very | useful scripting language in its own right even when not used | full-time as a shell. | legutierr wrote: | A recent demo of Nushell given a couple of weeks ago: | | https://media.handmade-seattle.com/nushell/ | ghostly_s wrote: | Oh wow...finally someone is bringing the great ideas of | Powershell to unix. Can't wait to see how this turns out. | pxc wrote: | You can run PowerShell on Unix already, but imo it is too | slow for interactive use. Getting it to act like a Fish | makes it very, very slow | Aloha wrote: | I can't imagine it being any slower then it already is | out of the box. | exyi wrote: | But I think it's quite good for scripting. You can call | any system command as easily as in bash while being able | to use variables for not just strings. I'd never use it | as interactive shell, of course :] | | Also... the script will then run only on my machine as | most Linux systems don't have powershell and most Windows | don't have the Unix commands I still use all the time. | pxc wrote: | Yeah, I agree that PowerShell is great for scripting. I | don't do that much scripting on my personal Linux systems | that really calls for PowerShell, but I like using | PowerShell for hitting HTTP APIs or processing structured | data at work. | | > Also... the script will then run only on my machine as | most Linux systems don't have powershell and most Windows | don't have the Unix commands I still use all the time. | | Hahahaha! Oof. | | It's more work, but when I use PowerShell, I try to use | pure PowerShell, both for aesthetic reasons (cleanliness, | 'portability') and just in order to practice and learn | more PowerShell APIs along the way. | michaelcampbell wrote: | > great ideas of Powershell to unix | | Now-If-They-Could-Improve the Syntax To-Make-It-Usable. | nojito wrote: | At least it's consistent. Verb-Noun | GrinningFool wrote: | Thanks for that, fzf-tab was the last missing piece in my | setup. | kbd wrote: | Nice. Yeah it works great. I have an extensive set of git | aliases. Yesterday I was merging a branch with `gmn` (`git | merge --no-ff`, which is actually an alias to `g mn`, where | `g` is an alias to git of course) and it gave me a fuzzy find | of my branches through all the aliases. | | Edit: also things like `kill`. `kill [tab]` gives you a | fuzzy-find list of all your processes so it's way faster to | use than ps | grep. | nerdponx wrote: | Zsh has become an indispensable power tool for me. I am | interested in other shells (especially PowerShell), but Zsh is | now embedded deep in my brain, next to Vim and Python, and I | doubt I will ever seriously migrate away. | | That said: what do you like about Nu shell specifically? | kbd wrote: | > what do you like about Nu shell specifically? | | A whole bunch of things: | | 1. abandonment of POSIX shell syntax. We can do better. I'm | happy with Zsh being POSIX-compatible, and that will always | be there. | | 2. a focus on structured data. Nu basically has hierarchical | dataframes built-in, along with lots of facilities for their | manipulation. There have been a few other attempts at this | but the benefits are obvious. Rather than figuring out how to | `awk` your way through whatever text output a command | generates, command output in Nu is structured and everything | can be handled in orthogonal ways. | | 3. modern conveniences built-in, like syntax highlighting, | and AFAIK they want to include features like "do something | when you cd into a directory" that we currently need more | tools for (i.e. direnv, which I highly recommend!) | | 4. serious technology. The people behind it are experts and | JT has been showing off (https://youtu.be/3o8b_QcrFHc) the | engine that enables trivially parallelizable loops. No more | need for `xargs`. | | 5. I hesitate to mention "made in Rust" as a feature, but | using a modern language for core infrastructure does matter. | kbd wrote: | I'll put it this way: Nu shell seems perfectly supportive | of my philosophy that a shell is basically a REPL for a | computer, and they're taking the ergonomics of an | interactive REPL along with the _programming language_ that | powers that REPL seriously. | | The thing is, there's currently NOTHING GOOD for "shell | scripting". Shell sucks (yes it does), so for anything more | than very short things I'd rather write Python. But Python | sucks for shell-like things, parallelization, it has slow | startup, and you also can't do things like put environment | variables into your session or change the working | directory, so you often wind up writing shims (eg. Broot's | br alias - https://dystroy.org/broot/install-br/). | | Yes I've looked at Xonsh but maybe the additional syntax is | offputting to me. Like, I wouldn't use it as a shell over | Zsh (how's Xonsh's fzf support? I don't know, but I know | everything's going to support Zsh), and I dunno if I want | to use its syntax extensions over just Python. Though It's | always on my list of things to re-explore, and maybe it'll | click one day. But it being based in Python makes it feel | slow (I wrote my prompt in Zig to get it to be fast...) | | This is relevant to mention: I wrote a small Python library | (https://github.com/kbd/aush) that's basically a DSL for | subprocesses, so it tries to make it more convenient to do | shell-like things. I find it preferable to shell or Python | alone most of the time. Here's an example of its use in my | script that creates a new Python project: | https://github.com/kbd/setup/blob/master/HOME/bin/create- | pyt... | | I haven't figured out a convenient way to implement shell | piping well with Python's pipe operator, or pass through | interactive output directly (so things that "update" the | display, like poetry and npm don't behave the same as they | do interactively) so it's still .9 status, but it works | really well for what it is, and you can always write | "regular Python" along with it. | | Anyway, Nu seems to be an attempt to put a "real" | programming language REPL in my shell, from people who have | serious language experience, so I'm hopeful it'll be great. | enriquto wrote: | > A whole bunch of things: | | I appreciate the clarity of your message... curiously | enough all the things that you mention I see them as anti- | features of nushell (except the first one) | | 1. Posix shell is clunky has its limitations but there's | nothing really flawed about it. It is nice to have non- | posix shells, though; in that I agree with you. | | 2. I hate hate hate the very concept of dataframes. They | seem like a useless over-engineering. Plain tabular data is | a perfect, and the columns of a table are always named 1, | 2, 3. The whole point of abstraction is that you do _not_ | care about the meaning of the columns of your table, and | the programs (like the lovely awk) that deal with these | columns do not care either. There 's nothing more | "orthogonal" than that: filters that do not understand the | data but can filter it anyway. | | 3. syntax highlighting is a very personal issue; in my case | I prefer my terminal not to look like a christmas tree. | | 4. xargs is one of my favorite tools (alongside gnu make | and gnu parallel) and there's nothing "unserious" about it. | The happiest moments in my programming life are when I get | to use these tools. Not using xargs sounds like a | nightmare! | | 5. Rust is definitely an anti-feature to me: it's like a | language that was built by picking the worst features of | many already ugly languages. I would not really care in | what language the shell is written, but I'd rather have it | written in saner, "unsafe" languages. | nerdponx wrote: | I strongly disagree about data frames. I am a data | scientist professionally, and I think the data frame is | one of the most important programming abstractions I use. | rainingmonkey wrote: | > while Fish has some nice out-of-the-box features, they're all | achievable in Zsh with a few lines of plugins. | | The point of fish is that there is no configuration required. | | You don't have to learn to configure it, you don't have to be | part of "the community" to learn which plugins to use, you'll | be able to sit in front of any fish prompt and have it work as | expected without having to move dotfiles around. | kbd wrote: | That's a cool argument for Fish for beginners. When you spend | thousands of hours in a shell that doesn't matter as much. I | don't see any benefit for someone who has Zsh set up well, | but yes you do have to google once how to configure auto- | completion and so on. | ViViDboarder wrote: | Probably little for anyone who has any shell "set up well". | Just if they are tired of spending time tweaking things and | would rather more capable out of the box experiences so | they can benefit from features added to the core shell | without hunting for plugins. | | I use Fish, however I also use Vim and do the plugin hunt | there. I enjoy it, but I'm glad to not be doing it for both | my environments. | kbd wrote: | Comparing the "plugin hunt" between vim and zsh is a bit | much. I use three for Zsh, just syntax highlighting, | autosuggestions, and fzf-tab. I don't use a Zsh plugin | manager. | user-the-name wrote: | zsh has this absolutely ridiculous case of feature shyness. It | has tons of great features, which it goes to great lengths to | hide from you for some indecipherable reason. | opk wrote: | The reason is to preserve compatibility for everyone's | configuration that they carefully built up over decades. It's | quite hard to change things to enable some new thing without | annoying many users. The last time that was tried was in the | '90s and there are still zsh developers around who | experienced the fallout. I value the fact that my shell | doesn't change on me without warning like many GUI desktop | environments. | | In recent years the existence of frameworks like oh-my-zsh | has contributed further to this situation because it has | separated the detailed configuration from the base zsh | project. It's a pity omz doesn't enable more really. Many | things it does are not really useful unless you take the time | to actually learn them. A lot of plugins just define aliases | but if you don't know what they are, they just sit there | unused. | sprash wrote: | Many of the features are also achievable with pure bash with | ble.sh (https://github.com/akinomyoga/ble.sh). | BeetleB wrote: | xonsh is also worth a try. I've been using it for a few years | now. | jrm4 wrote: | Specific question for anyone who's gone from bash to fish (and | maybe back) -- Does the "only splitting on newlines" mess you up? | I've just been in bash _so long_ that I feel like this will get | me? | sandreas wrote: | Don't forget that if you use #!/bin/sh in POSIX compatible | scripts, you can configure /bin/sh to symlink dash shell instead | of bash or zsh. Dash will run scripts way faster (up to 4x) | because it is less feature blown... | | This is the reason, why I try to prevent using bash/zsh exclusive | features in my daily use scripts. | nvllsvm wrote: | I use `#!/usr/bin/env sh` in my scripts to avoid having to | overwrite a systems defualt /bin/sh and whatever issues that | can result in. Instead, I have ~/.local/bin in PATH with dash | symlinked to ~/.local/bin/sh | jonfw wrote: | I used fish for a couple of years and really liked it. But I | recently learned that I can configure ZSH to have all of the same | auto-complete and plugins that I loved from fish. Now I have all | of the creature comforts I like, with POSIX compliance | | I found that while fish has better syntax than bash for most | things, the hassles with incompatibility or unexpected behavior | brought me much more trouble than BASH's syntax ever has | jscheel wrote: | This is my problem as well. I've been using fish for quite a | long time, and I'm still frustrated by weird posix | incompatibility. | dangus wrote: | bass can be helpful for some of those posix issues: | | https://github.com/edc/bass | | Another random tip: python virtualenv generates a | activate.fish script that you should use instead of the plain | activate script. | emptysongglass wrote: | Bass has never worked for me, in any scenario. I'm curious | to see how you use it. I have never successfully been able | to feed it any bash script. At this point I suspect I'm | either holding it wrong or it is a thing that is invoked as | a thing that works without ever being used in earnest. | Macha wrote: | bass works for things you're meant to source. If the | script is not meant to be sourced, just run bash | yourscript.sh . | | It basically runs the script in bash, diffs the | environment, and applies the environment changes to your | outer fish shell. I use it for some internal tools, and | previously used it for nvm though I moved from nvm to fnm | now which has fish support. | yourad_io wrote: | Hadn't heard of fnm before, thanks. Seems worth checking | out. | dangus wrote: | If your bash script has a shebang you shouldn't need bass | at all. Fish will read the shebang and just run your | script with bash. | | The only thing I ever used bass for was this edge case | where at work the way we login to AWS is using this Okta | AWS integration that prints out a list of export | commands. | | Since fish isn't compatible with bash export commands, I | just run that command result through bass, which | automatically converts them to the fish set -x commands. | | If I remember right, I think the reason why the bash | script my company made didn't work is that the export | commands that were run in bash weren't propagated to the | underlying fish environment. I was using fish to run a | script with a separate shell, so it didn't affect my | environment variables. | | Or maybe it was because running exec inside a bash script | throws you back into fish which then can't understand the | export command. | | I could have definitely done my own thing with sed/awk | instead, but I suck at those tools and someone else | already implemented the functionality in bass. | bass exec | aws_okta_thing_that_prints_export_commands_to_stdout | | (Off the top of my head, I think it was something like | that, could be misremembering! And by this comment you | might be able to tell that I'm far from an expert on how | everything works.) | pxc wrote: | > If your bash script has a shebang you shouldn't need | bass at all. Fish will read the shebang and just run your | script with bash. | | Shebangs are actually handled by the operating system | kernel! I only know this because certain kinds of | shebangs work on Linux, but not on other OSes | lovelyviking wrote: | >I'm still frustrated by weird posix incompatibility. | | Can you also share what are the most significant problems | with posix incompatibility for you? Why is it a problem? | mey wrote: | The one I see is really, all of Linux vs OSX/MacOS. And | which version of Bash is shipped by default. | | Internally we have a boot strap run book | developers/operations to bring up either Windows/WSL or | MacOS to a consistent shell env. | mattgreenrocks wrote: | The best reason to choose fish over zsh is that everything | works so well out of the box that you stop messing with it. | | I haven't tweaked my shell config in 7 or 8 months now. | | This is a different mindset from the giant zsh configs, "plugin | managers" and other junk that is wholly irrelevant to using the | shell. You'd think that fish incorporating a lot of | functionality that zsh has would manifest as bloating fish, | but, IMO the reality is that zsh's "bloat" is pushed into user | configuration and the user is tasked with making it work. | bscphil wrote: | > The best reason to choose fish over zsh is that everything | works so well out of the box that you stop messing with it. | | This is such an incredibly odd perspective to me. I use zsh | and have not touched my shell config in _years_. Messing with | configurations to get things working to your liking is a one | time thing. I don 't even use plugins. | | On the other hand, if fish _doesn 't_ work to your liking out | of the box, and for many people it does not, there's no | "messing with it" that's possible. You are forced to give up | and use something else. Your reason to choose fish is only a | good reason if you already agree with every minute choice the | developers made and refuse to let you adjust. | NavinF wrote: | Another issue with zsh plugins is that they are incredibly | slow. Oh-my-zsh makes every terminal feel like it's running | on another machine over ssh | RMPR wrote: | And that delay when it updates itself is just the worst | pmarreck wrote: | I thought there was something in, like, Powerman10k or | something, which managed to avoid that issue? | kekebo wrote: | You probably mean powerlevel10k[0], although that's | mostly a replacement of powerlevel9k, which is only one | of the (theming) plugins that oh-my-zsh commonly handles. | | As for a replacement for oh-my-zsh itself, I had good | experiences with zgen[1] but the fastest I've found is | zim-fw[2] which produces acceptable start times for | me[3]. | | [0] https://github.com/romkatv/powerlevel10k/ | | [1] https://github.com/tarjoilija/zgen | | [2] https://github.com/zimfw/zimfw/ | | [3] https://i.imgur.com/mPPQuyh.png | smohare wrote: | This is the framework, not the plugins. | pxc wrote: | > The best reason to choose fish over zsh is that everything | works so well out of the box that you stop messing with it. | | I've found that sometimes the opposite can be true (in a good | way!). At one workplace, I introduced Fish to some fellow | developers who until then mostly saw using the command line | as a strange, difficult, and unpleasant part of their jobs. | | Once I got them started with Fish, they were happy enough | with default interactive behaviors, convenient documentation, | and simple scripting syntax that it encouraged them to do a | little more scripting, and eventually to customize some of | the aesthetic stuff by writing custom prompts! | | It was pretty cool to see. | canjobear wrote: | I use fish. I haven't tweaked my shell config in 9 years | binarysneaker wrote: | Came here to say the same. The default zsh config in Kali has | some pretty nice autocompletions, which I've borrowed and use | on all my other systems. | ayushnix wrote: | I don't get why people expect POSIX compliance from fish. Your | interactive shell and your scripting shell can be, should be, | and often are, different. | | I use bash as my default user shell, fish as the default shell | of my terminal emulator, and I write scripts for both POSIX sh | (dash and busybox ash) and bash. I end up using three different | shells with different purposes. | | Sure, I could use zsh both as an interactive and scripting | shell but I don't have the time or willingness to configure it | when fish offers a nice out of the box experience. Not to | mention that zsh shouldn't be used as a scripting shell in the | first place. | Aloha wrote: | Exactly this. | | I script in bash (though I'm super interested in oil), and | use fish as my interactive shell, it's pinned to screen 0 in | my screen session. | pxc wrote: | > Not to mention that zsh shouldn't be used as a scripting | shell in the first place. | | Why not? If I'm writing scripts for automating configuration | on modern macOS, for example, where ZSH is installed by | default, why not write ZSH scripts? | GhettoComputers wrote: | I just start scripts in bash for compatibility at the beginning | or use scripts that state it, avoid scripting as much as | possible, and I spent a lot of wasted time with configuration | of zsh to get most of the functionality of fish but never as | good. What did you install? | rainingmonkey wrote: | POSIX compliance has never brought me any issues, if I want | bash syntax I just use `bash -c COMMAND`. You can invoke bash | scripts with `bash SCRIPT` or just add the bash shebang | `#!/bin/bash` to the top of your script, set the executable bit | and invoke directly. | Macha wrote: | Interestingly I moved from such a zsh setup to fish a couple of | years back. Zsh with add-ons was noticeably slow compared to | fish and syncing the config to all the devices I used. | ulzeraj wrote: | ZSH plus oh-my-zsh cd'ing into a git repo with large LFS | files will hang your shell even on very fast NVME storage. | xondono wrote: | That's the git plugin doing it's thing. You can fix it in | config but I admit is an annoying default. | ivank wrote: | I found that all I really wanted to show was the current | branch, which I do with https://gist.github.com/ivan/79de5e | 87210e8cf21e305bb4c30c436... | adrusi wrote: | You can get reasonable version control integration from zsh | without any kind of wild oh-my-zsh config. Most distributed | versions of zsh are compiled with vcs_info enabled. | autoload -Uz vcs_info zstyle ':vcs_info:*' enable | git hg zstyle ':vcs_info:*' check-for-changes true | zstyle ':vcs_info:git*' formats | "%{$fg[cyan]%}(%{$fg[green]%}%s %{$fg[blue]%}%r%{$fg[cyan]% | }:%{$fg[green]%}%b%{$fg[yellow]%}%m%u%c%{$fg[cyan]%})%{$res | et_color%} " setopt prompt_subst | export PROMPT="%{$fg_bold[red]%}%n%{$reset_color$fg[white]% | }@%{$fg_bold[green]%}%m%{$reset_color$fg[white]%}:%{$fg[cya | n]%}%1~ \${vcs_info_msg_0_}%{$fg_bold[white]%}%(#.#.\$) | %{$reset_color%}" | saagarjha wrote: | zsh is not POSIX compliant and never had a goal of being POSIX | compliant. (Amusingly, I use bash and I can pretty much replace | "zsh" in your claim with "bash" and have it apply to my usage- | except in this case it would be true :P) | ch_123 wrote: | zsh has a POSIX compatibility mode, but it is not enabled by | default. (You can see some details in the release notes: | https://zsh.sourceforge.io/releases.html) | wirthjason wrote: | Any suggestions? | | I've recent switched from vanilla bash to ZSH. I mainly use oh- | my-zsh and Power10k. Once again the defaults without much | customization. | Bayart wrote: | Slimzsh[1] is a very nice default configuration. Just a slim | prompt, fast-syntax-highlighting and some vanilla settings. | | I keep a personal fork with a few added plugins (most notably | zsh-autosuggestions and ssh-agent). No need for a plugin | manager. | | oh-my-zsh is way too bloated. But it's a nice repo if you're | looking for plugins and aliases. | | [1]: https://github.com/changs/slimzsh | mattgreenrocks wrote: | The popularity of OMZ with the performance issues and | update nags really makes me wonder if people even notice or | care about those two things. | disk0 wrote: | zinit did wonders for my config, would highly recommend: | | https://github.com/zdharma-continuum/zinit | animal_spirits wrote: | My only plugins are zsh-autosuggestion | (https://github.com/zsh-users/zsh-autosuggestions) zsh- | syntax-highlighting (https://github.com/zsh-users/zsh-syntax- | highlighting) and zsh fzf-tab (https://github.com/Aloxaf/fzf- | tab) its been wonderful using these plugins | anamexis wrote: | I prefer prezto to oh-my-zsh for performance reasons. | | https://github.com/sorin-ionescu/prezto | [deleted] | dietr1ch wrote: | I moved from bash => zsh => fish. I wanted reasonable features | on my shell, and fish was much faster and needed almost no | plugins. | | The fact that I can write a simple for loop without needing to | look up how to do it by far beats the POSIX compatibility, if I | need it I can still write a bash script, but when using the | shell I don't need to recall where semicolons or `do`, brackets | (and how many) go. | thibran wrote: | > I moved from bash => zsh => fish | | Did the same, but moved on. | | Now it is: bash => zsh => fish => nu | macromagnon wrote: | Is it that hard to remember a bash for loop? | for i in $(seq 1 10) do echo $i done | | Then you can just replace new lines with ; if writing a one | liner. for i in $(seq 1 10); do echo $i; done | | I guess it isn't as simple as python for i in | range(10): print(i) | | but it's pretty close aside from the variable binding. | yesenadam wrote: | for i in {1..10} | jeppesen-io wrote: | I wish I could use fish, but I can't leave the fancy auto | complete of kubectl and git | EdwardDiego wrote: | Fish does git autocomplete out of the box, and there's a Fisher | plugin for kubectl autocomplete. Works great. | revscat wrote: | > Smart tab completion not only for the commands but for the | arguments as well, and it apparently does that by parsing man | pages. | | And it does this every time you spawn a shell. So if you have set | your login shell to fish, then every time you launch a shell it | loads all the fish plugins like this one, and that slows it down. | And you can't turn it off, or couldn't the last time I checked | around a year ago. Insult to injury? The PR where this was | requested was closed by the devs as "wontfix". | | This, and it's lack of POSIX compatibility, made me switch back | to zsh. | iamevn wrote: | do you have fish_update_completions somewhere that runs when | you start a shell? maybe ~/.config/fish/config.fish? | faho wrote: | >And it does this every time you spawn a shell. | | It does not. The completion generation is on first start and | whenever you run `fish_update_completions`. | | (note that the importance of man parsing is often quite | overstated, it only gets you so far, all the advanced | completion stuff is hand-written) | | Source: I'm a fish dev. | pxc wrote: | On NixOS, we generate the completions on behalf of users at | install time, so they never have to see a slow startup at | all. Fish makes it easy to do! Thanks :D | pxc wrote: | > So if you have set your login shell to fish, then every time | you launch a shell it loads all the fish plugins like this one, | and that slows it down | | Fish completions and functions are lazy-loaded, so this doesn't | happen unless you write your config to force it to happen. | | Fish also provides you with functions you can use to check | whether a shell instance is a login shell, is interactive, or | is just being invoked as (part of a) script. If you do have | some heavy-duty stuff you want to run on startup for your login | shell or your interactive shells, you can do that selectively | and keep Fish startup for other purposes fast. | ilaksh wrote: | I have been using fish for years. I don't have those issues | because I just leave the default as bash and run the fish | command manually when I log in. Then if I have some | incompatibility (pretty rare) I can just type 'exit'. | thrwyoilarticle wrote: | Shells and scripting languages are different things. I don't care | how good of a scripting language Powershell is, it's painful to | use as a shell. I don't care that fish can't run sh scripts, I've | never used it on a machine that didn't have sh. Can we stop | judging oranges for their lack of crunch? | [deleted] | pxc wrote: | Ideally you do want them to be the same, so that the skill of | using one reinforces the skill of using the other, and you can | begin to shape scripts out of your shell history. | | Output redirection doesn't work right with Fish functions, | which makes them unusable in certain kinds of scripts. Aside | from that, though, Fish is perfectly pleasant for simple | scripting. I use Fish for simple stuff and PowerShell for | anything serious. Some day I'd like to use something like | Elvish or Nushell for both, and use the same language as my | interactive shell. | buu700 wrote: | Agreed. I liked fish last time I tried it (probably over a | decade ago), but bash scripting is what I'm familiar with and | it's just so convenient in day-to-day usage to be able to | throw out one-liners for mundane things and then have them | permanently searchable in my history. | yourad_io wrote: | I thought Ctrl+R was cool but in fish you are always in | search mode! Start typing any part of your previous command | and hit up arrow! | MaulingMonkey wrote: | > Ideally you do want them to be the same, so that the skill | of using one reinforces the skill of using the other, | | I've used several dozen shells, script languages, and | programming languages - and have needed to do within the | context of a single job. What's one more? For an interactive | shell I prioritize writeability, and for scripts I prioritize | readability and maintainability. These are often at odds - | not just in what I write, but in the syntax itself - and by | making my shell and script the same, I make middling | compromises resulting in a jack of all trades that is a | master of none. | | I disagree that this is "ideal". | | > and you can begin to shape scripts out of your shell | history. | | It's been my experience that this is quite doable even when | the scripting language has different syntax than your shell. | Oh, sure, it's not as simple as Copy+Paste - but it's never | that simple. Even simple shell scripts inevitably end up | needing error checking, sanity checks, error messages, ... | ChrisSD wrote: | Eh. Tbh I'm find both powershell and unixy shells have their | advantages and warts. I'm not sure either is "better". Maybe | I'm just not a fan of shells in general. | emersion wrote: | It's pretty common to copy-paste POSIX sh one-liners, or | `source` a simple script. fish makes this annoying to do. | CGamesPlay wrote: | Actually, in the last few years this gripe has gone away, at | least for me. Once they added proper support for `VAR=val cmd | && othercmd`, I haven't run across any one-liners that didn't | work in fish. | joshmanders wrote: | The only issue I ran into this was when the one liners had | subshell syntax $(cmd here), and all I had to do was convert | $() to just (). | mattgreenrocks wrote: | AFAIK that will be remedied in an upcoming release. | shepherdjerred wrote: | I'll trade the occasional minor annoyance for the day-to-day | ease of use that fish provides | [deleted] | KptMarchewa wrote: | bash -c "PASTE_HERE" | adrusi wrote: | That's annoying when you have complex quoting in the pasted | script, but you can always do bash | PASTE_HERE exit | | Works for everything unless the pasted commands set | variables you want to use. | smoldesu wrote: | Yeah, I hear a lot of people throw shade at fish and then act | equally surprised when I don't run my scripts with it. Much | like Bash, Perl, Python or even ZSH by some respects, fish is | just another tool in my toolbox. It so happens to be the one I | default to though, which _for some reason_ sends people flying | off the handle. | desireco42 wrote: | It is typical HN that everyone is talking about Zsh and how it | isn't so bad. And you know what, I used it for a while long time | ago, and it is great. I even had config I could transport to | another machine when I need. | | All that can't be compared with fish out of the box, which is why | I am using fish, it will be 10 or so years now. When I say use, I | mean that, I just use it, I don't spend time learning it's | obscure features, creating scripts etc, no, just use it. | | I have alias list that I use to make myself productive and it | goes along with me to a new machine. Very slim and simple | configuration. That and Vim, but that is another story. | vorticalbox wrote: | where does one put an alias ? | | i have a collection of them in my .zshrc that i would love to | use. | iamevn wrote: | they're just functions so they end up in files in | ~/.config/fish/functions/ $ alias foo bar | $ function foo --wraps bar --description 'alias foo=bar' | bar $argv end | | these two are basically equivalent. you'll need to | $ funcsave foo | | to make it persist. this will write foo.fish into that | functions folder. | | there's also abbreviations like $ abbr --add | ll ls -lh | | which expand as you type. ll won't end up in your history | because it's expanded before that. | tryptophan wrote: | Abbreviations are actually brilliant! So much better than | aliases. Long live fish. | cbzehner wrote: | I used Fish for several years before switching over to nushell a | few weeks ago. | | Nushell takes the ideas behind Fish even further by incorporating | types other than strings and adding more built-in functionality | that's useful for your average command-line user. | | I doubt I'll go back but both are great! Highly recommend Fish | and Nushell! | bobbylarrybobby wrote: | Does nushell have the same kind of autocomplete? That's what | really keeps me using fish | pxc wrote: | No, at least not out of the box, on Nushell 0.39.0. | | Just tried it and there's no - out-of-order | tab completion - preview with left/right arrow | completion - case-insensitive/smart-case completion | londons_explore wrote: | > You can configure your shell using a web interface! | | Think about that for a while. | mro_name wrote: | indeed, IMO the biggest downside - the (python-)heavy | underpinnings. | assbuttbuttass wrote: | Fish really shines in interactive use, like being able to write | fish_vi_key_bindings, and that setting is preserved after | restarting fish. Or using funced and funcsave to modify helper | scripts, or abbr -s ... | | I'm not sure I've ever opened my fish config file, but I'm still | able to customize it easily | Ultimatt wrote: | Is no one going to comment on for *.pdf assumes no spaces in | filenames for the BASH example to be correct, what about Fish? | pxc wrote: | Fish doesn't do automatic word splitting on variable | substitutions like bash does. Like ZSH (afaik), Fish doesn't | require you to religiously surround every variable substitution | in double quotation marks in case the contents have a space. | moonchild wrote: | I do not know about fish, but it behaves correctly in zsh. | vasergen wrote: | I like software where you don't need to spend hours or even days | on configuration and it just works out of box. Unfortunately the | different syntax is no go for me. I have a bunch of scripts which | I can run on my local machine and remote interchangeably. Even if | syntax is better I want to learn rather `one syntax` that work | everywhere. But that is only one thing that prevents me from | trying it. | j4hdufd8 wrote: | Agreed. Wish there was a pretty shell like fish that used | /bin/sh under the hood. | jaredklewis wrote: | Maybe it's a personal quirk but all of my shell scripts have a | shebang (#!) header anyway. | | I've used fish as my shell for years and still have so far | never written any shell scripts in fish. It may also be a nice | scripting language, but I personally use it because it's a | fantastic interactive shell. | tomxor wrote: | Mine even have a #!/usr/bin/env which I never shook due to | going back and forth between Linux and FreeBSD at one point | (bash isn't where you might expect). | | I think i'd be up for trying out a new shell for my command | line, it's rare I use shell specific syntax heavily for one | liners... unless I just don't know it yet. | canjobear wrote: | Just invoke your scripts with sh or bash | Hamuko wrote: | Just add #!/usr/bin/env bash? | nojito wrote: | Fish is good, but most shells pale in comparison to powershell | unfortunately. | philipswood wrote: | PowerShell: Maybe the learning curve is steep or something, but | the times I've had to use it I disliked it. | | I want to like it. It's goals and purposes seem to be in the | right place, but.... | | Nope. | [deleted] | pxc wrote: | PowerShell is definitely way more capable a scripting language, | but it pales in comparison to Fish when it comes to speed, | ease, and pleasantness of interactive use. | | There's a new generation of shells on the rise which look up to | both Fish and PowerShell as models of different virtues they | want to embody. A lot of them are already usable, and some day | a few of them will be killer apps for developers and sysadmins | nojito wrote: | Nothing is speedier, easier, or more interactive than Get- | Help in Powershell. | | https://docs.microsoft.com/en- | us/powershell/module/microsoft... | | Using other shells is like living in the stone age. I don't | know why people would do that to themselves. | pxc wrote: | Get-Help is pretty good, but I don't like several things | about it: | | 1. You have to go out of your way to fetch the full help | pages on a given PowerShell installation (they're not | stored locally by default). | | 2. Even after you fetch the full help, not all of it is | actually included in the Get-Help output (IIRC examples), | so you often need to use `Get-Help -Online`, which opens a | separate application (browser) and that sucks | | 3. Inside the terminal, there's little to no special | formatting or syntax highlighting, unlike what you get with | a good `man` pager | | 4. Get-Help output (unlike `man` output as configured on | most distros) is not paged by default. | | `man` could be better, and I don't really vibe with `info`, | but Get-Help isn't that great imo. The actual content of | the help is quite good, and it's nice that it includes | examples, but the same is true of most man pages. | emersion wrote: | > You can configure your shell using a web interface! Just run | fish_config | | As much as I like the fish shell, I really consider this an anti- | feature. A TUI application to configure the shell would make much | more sense. The terminal emulator is your platform, not the Web. | octet1 wrote: | Wondering how it would function after being passed through | https://github.com/azproduction/html-tui | jvolkman wrote: | The web configurator is a practical feature. I just tried it | and it seems to work pretty well. | | But you're in luck; looks like the next version will have | everything also configurable via text: https://github.com/fish- | shell/fish-shell/issues/3625 | pxc wrote: | That's a CLI, not a TUI, but it is awesome that they've now | made the CLI configuration worflow feature-complete! | slifin wrote: | Fish is so good I think I'm using shellder and some other bits | | But I just use it as a way to run commands, and I use dynamic | languages to create scripts just not bash.. | pvaldes wrote: | > fish is not POSIX compliant, don't expect your previous scripts | to work at all | | Extend, embrace, extinguish?... | purerandomness wrote: | fish never claimed to be POSIX compliant to begin with, so no. | There never was an 'extend' step. | pvaldes wrote: | But seems to want us to replace the old reliable shell with | it (Or this is what I understand). I see a lot of people | reinventing the wheel in Linux and trying to appeal the new | users. What you have in the end is normally worse than the | standard ones. Is just dissecting Linux in a lot of smaller | particles and smaller rooms. | | So thanks, but not thanks. Not to me. | | Wouldn't be much more practical to use all of those talent | and ideas to help to improve the extant bash shell instead? | Shared404 wrote: | Sometimes to improve on old ideas or develop new ones you | need to start over. | | See plan9, RedoxOS, TempleOS, Gemini, etc. | | None of these are currently in a position to gain | dominance, but they all explore a space that couldn't be | explored starting with a prior code base. | woodruffw wrote: | There are lots of "old reliable shells" that are POSIX | incompatible. (t)csh[1] is the first family that comes to | mind. | | The EEE analogy is more applicable to GNU Bash anyways: it | extended the POSIX sh baseline with a bunch of GNUisms that | a lot of "POSIX" sh scripts now unintentionally use. | | [1]: https://en.wikipedia.org/wiki/C_shell | adrian_b wrote: | I do not think that there are many GNUisms in bash, even | if indeed there are a few optional syntax variants that | should be avoided for compatibility with other shells. | | In any case I am not aware of any GNUism that is actually | useful in scripts, so taking care to not use any syntax | variant specific to bash is not a problem. | | All the important bash features that are not POSIX are | not GNUisms, but they are: | | 1. The 50% of the new ksh 1988 features that have not | been included in the POSIX shell, e.g. condition testing | "[[ ... ]]" and arithmetic testing "(( ... ))". | | 2. All the new features added by ksh 1993, none of which | have been included in POSIX, e.g. "for (( ... ))" and the | extra parameter expansions that replace the most common | invocations of sed or awk. | | 3. The brace expansion from csh | | 4. The extended brace expansion forms added by zsh (which | generate arithmetic progressions and are usually | preferable to "for ((...))") | | Attempting to write POSIX-compliant scripts in 2021, i.e. | not using these extra ksh/csh/zsh features provided by | bash, is a huge mistake in my opinion, because without | these features any non-trivial script becomes much longer | and much more error-prone. | | The Google recommended style for shell scripts | (https://google.github.io/styleguide/shellguide.html), | which is based on using all bash features, is pretty | decent. It is far less work to ensure that bash or | ksh/zsh exists on any target system than to maintain any | obsolete POSIX-compliant scripts (which are stuck to the | 1979 Bourne shell features + only half of what ksh 1988 | has added). | oblio wrote: | > Wouldn't be much more practical to use all of those | talent and ideas to help to improve the extant bash shell | instead? | | Yeah, good luck with that. | | It's a garbage pile of code that creates an interpreter | with piles upon piles of undefined behavior that random | scripts out there in the world rely on. | | I don't even think it was a working CI setup. | | I'd be super glad to be proven wrong, maybe things have | changed in the meantime. | fiedzia wrote: | All your existing scripts will continue to work just fine. | #!/usr/bin/bash | unixhero wrote: | Yeah, I mean they have the hashbang. | junon wrote: | Fish is not a company, either. Also, competing standards is not | an example of EEE. | garciasn wrote: | More and more often, I am getting the following error: | | Malware and Phishing | | This site is blocked because it is a known security threat. | Please contact your network administrator to gain access. | | My assumption this is because I have Xfinity Business Class and | it's blocking the site. But why would I be seeing this so often | on a site linked from HN? | cpach wrote: | It could be that the web filter in question has no info about | the site rmpr.xyz, and therefore gives it an unfavourable | score. | | You might want to reach out to Xfinity support, or bypass their | filter using a VPN or proxy. | vorticalbox wrote: | maybe the .xyz domain? | ribit wrote: | I really love fish and the philosophy behind it, especially the | "configurability is the root of all evil" attitude. Makes for a | well though out software that is a true pleasure to use. | ziml77 wrote: | I love that philosophy too. If there's too many knobs to turn | I'm going to constantly fiddle with them. The only things in my | config.fish are calls to scripts to setup iTerm 2 integration | and the Starship prompt. | craigkerstiens wrote: | Strongly agreed here, it really just works. Sure you can get the | same with zsh but the hours of my life I've spent tweaking and | tuning zsh I'd happily give back because fish is good enough. | | When we built our CLI for Crunchy Bridge it was a couple lines to | add tab completion to the CLI when running in Fish | (https://blog.crunchydata.com/blog/introducing-the-crunchy- | br...), love that when building such tooling giving a better end | user experience was so simple. ___________________________________________________________________ (page generated 2021-11-25 23:00 UTC)