Spyke

Syndicated from the fediverse. Read and engage on the original instance.

View original on programming.dev

184 replies

I've never understood the need for fish. The shell experience is basically the same as zsh, and although it's much more pleasant to script for, you miss out on compatibility with POSIX-compliant snippets, and besides, if you're writing long and complicated scripts that need anything more than a handful of scalar variables you should probably be using Python (or Perl if you're an old-school masochist).

6
lemmy.blahaj.zone

Powershell is probably simultaneously the best and worst thing Microsoft has ever created

90
Hawkereply
lemmy.world

Second best. The best was Active Directory.

10

I am the Linux folks.

FreeIPA is fine, and I don’t care much about the GPO aspect of Active Directory. But the standardization-by-ubiquity that made it easy for everyone to just follow along and make it so it Just Works has been a godsend.

Yes Microsoft built on the shoulders of giants but trying to make things work with OpenLDAP or the other also-ran directory services was a nightmare.

1
lemmy.blahaj.zone

I remember powershell being extremely slow to start on my laptop and sometimes slow to catch up to my typing (and I'm a slooow typist).

tbf it was the win 8.1 days, dunno if it's better now.

Really liked using it tho. At least it used my actual keyboard layout, unlike cmd.

7

It's much better now, I put off moving from cmd until somewhere around 2015 when I was using 'invoke-command' constantly, over the last decade or so I've moved to powershell proper cmdlets... Its actually not that bad.

1
Oversparkreply
piefed.social

Then give nushell a go. It's basically a modern implementation of some of the better ideas Powershell had.

23
lemmy.ml
  1. Types.

    You explode lists manually into items when calling commands on a variable list of arguments instead of “quoting variables” to prevent them from exploding.

    Who came up with the bullshit idea that exploding strings into words is such a common use case that this footgun is preferable to have an “explode lists” syntax?

  2. Errors. No more set -euo pipefail; shopt -s lastpipe to beat some semblance of sanity into bash

11
kn33reply
lemmy.world

One of the things I really like about PowerShell is the "verb-noun" convention. It makes things a lot easier when learning by examples. Wtf is a sed or an awk? But New-Item -Type Directory oh yeah that makes sense.

4

To be fair, the comparison there is mkdir which means make directory, but I don't doubt there are better examples.

2

Honestly it’s pretty good, but it’s very verbose in its commands and output.

The default settings are irritating but it takes only minor tweaks to make it tolerable (mainly fixing the tab completion)

It’s nicely consistent with its object handling.

As a windows shell it is head and shoulders above cmd.exe. I’ve thought about using it on Linux but there I like fish better.

4

Unironically though. It takes time because it's structurally different than python but it's fun when you figure it out

2

The Web site for fish reads:

Finally, a command line shell for the 90s

I love them and always will.

60
retrofed.com

Thompson shell (predates Bourne)


scsh (Scheme shell) and closh (Clojure shell)


sash (stand-alone shell)


gash (Guile shell)


ash (Almquist shell)


dash (Debian Almquist shell)


eshell (Emacs shell)


Shells I couldn't think of images for:

  • bosh (from SchilyTools)
  • tclsh (Tcl shell)
  • ion (from Redox OS)
106
xxxbreply
feddit.org


In case you don't know how to crop an image... but yeah, me too. This is peak.

3

LOL what the heck is the source of this, it's so surreal, people just chilling shooting hoops in the background XD

1
lemmy.blahaj.zone

ash, shares shared history with dash, integrated into busybox, default shell in alpine

toybox's shell, toybox's equivalent of busybox's ash

tcsh, a shell often found in BSDs for interactive usage by default

11

alias Da-boom-da-da-mmm-dum-na-ee-ma="sudo rm -rf /"

(I don't think it actually works this way in ksh but I already spent 10 minutes trying to figure out the command to get root privileges in ksh and that's already too much time for this dumb joke.)

31
daggermoonreply
piefed.world

I remember making that joke on Lemmy and someone calling me immature lol.

8
Mwa
thelemmy.club

i am using ZSH cause Fish is not POSIX compliant,which made it annoying to run scripts without rewriting them.

21
JackbyDevreply
programming.dev

When is this a problem? What scripts don't use a shebang and/or why does using sh call fish instead of bash or dash?

I have a mild dislike of fish because a few substitutions are different enough that my muscle memory isn't there. (But I also haven't put in serious effort to learn them.)

3
JackbyDevreply
programming.dev

Have you run into a specific problem or is this just a hypothetical you're worried about. I see this a lot but haven't ever actually run into it being a concern. If you run a script with #!/bin/sh from a Fish shell, it won't use Fish, it will use whatever you have sh pointing to. (Which shouldn't be Fish, it's usually bash or dash.)

2
Mwareply
thelemmy.club

I ran into issues on fish,i don't remember what they are but I think it's no shebang

1

Ah, I see. If you don't remember, don't sweat. I'm mostly curious just because posix issues is one of the few complaints I hear but I never see anything specific so I'm extremely curious lol. Please don't mistake this as one of those fanboyism moments where people try to say something they like is actually perfect and doesn't have flaws.

My understanding of shebangs is that it isn't your shell doing anything fancy with it, it's your OS (or something, I don't remember exactly, but it's lower level than the shell). So maybe something else borked. But I'm no fish expert, I have some error in some fish thing that prints an error every time I open a new shell that I'm too lazy to troubleshoot lol.

1
Mwareply
thelemmy.club

how about if its not in a sh file,its common for scripts to use sh or bash instead. but am just gonna stick to ZSH anyways

4

Linux doesn’t generally use extensions to decide what shell to use, so it doesn’t matter if it’s an sh file or not.

If it uses bash of course you can substitute #!/bin/bash

And of course you can use whatever shell you want, just saying that POSIX-compliance is not really relevant since the script can specify what shell it needs.

21

The file extension doesn't matter much on Linux. If you've got a shebang at the top, the shell you're running from will invoke the correct shell according to the shebang.

In some situations, you may want to use something like bash <your-script>, but that would only be when you've got a script that doesn't have a shebang, but not having one is bad practice and you really should be using them. Fish isn't the only non-POSIX shell you're going to encounter on a Linux system. Python, Perl, and probably some others will be there, and using a shebang ensures no shenanigans. So whether or not you use Fish, you should always use shebangs.

12
lemmy.world

imo fish is the best out of the box for me, but I just use bash cause its everywhere

75
awful.systems

I just wish fish would accept standard bash syntax in addition.

Like, if you can warn me that "this is not how we set vars in fish, do this instead!" then you could also just, you know, do it.

53

Our last apartment had a microwave that insisted that the off/cancel button was ONLY for the microwave part and NOT the timer part, and if you tried to use it to turn off the timer, would display a message saying "push timer button to turn timer off" (or smth to that effect). I found it infuriating. I told my wife, "if they can program it to sass me, they can program it to turn the damn timer off."

Anyway. I get it.

4
lime!reply
feddit.nu

yea but the posix sh set syntax is atrocious so not supporting it is doing you a favor

29
Laserreply
feddit.org

It's Stockholm syndrome

I mean who doesn't like putting mandatory quotes around all variables (though exceptions, like in [[ ... ]], apply)?

Or keywords like fi and esac or worrying about $IFS

8
lime!reply
feddit.nu

fi and esac but not rof or elihw

smh my head

1
lime!reply
feddit.nu

bash could really have improved things by giving us noitcnuf.

3

keywords like fi and esac

But it’s so clever!

1
nialv7reply
lemmy.world

I just wish my local restaurant would accept burger orders in addition.

Like, if you can warn me that "this is a Chinese noodle restaurant, we don't do burger here. Order one of these instead!" then you could also just, you know, make me a burger!

13
awful.systems

That analogy only holds if they cook the burger for you, hold it in front of you, and go "we don't make this", then throwing it out

7
nialv7reply
lemmy.world

No, it'd be like, when you asked them do you know what a burger is? They pointed at a picture of a burger on the wall (they put this picture on the wall because for whatever reason people kept asking them to make burgers), and told you, of course we know what a burger is, we don't make them, now order noodles or get out!

5
awful.systems

Okay, you know what... That's actually better than what I said. Defeat acknowledged.

(However, it still seems a bit silly to me. name="value" will prompt you to enter set name "value", with your exact name/value prefilled. As far as I know, it really is just syntax substitution; or am I wrong here? Are there semantic differences that can't be translated?)

1

i think it could be a slippery slope thing. things like name="value" are easy to parse and implement, but then what if people keep asking for a little bit more, and a little bit more again? bash's syntax is very very complex, there will be no winners if fish has a half-assed implementation of what bash does, it's better to not even start.

3
awful.systems

No, I'm really happy with fish in general and use its syntax. The only times are things like e.g. a coworker sending me a 3-line script and then not being able to just copy, paste, enter.

1
mercreply
sh.itjust.works

Yeah, that's where this meme fails. BASH is the default and has been for decades. Most people are not Gigachad.

I'll accept FISH as being for babies, Zsh as being for Emo types or extra nerdy people. SH being for white beards makes sense.

BASH is:

23
lemmy.world

I used a macbook for work for a while with zsh in the terminal. IDK whether I qualify as emo, but I am nerdy. I only think of myself as regular nerdy, though, not extra nerdy.

6
mercreply
sh.itjust.works

Was zsh the default at the time? Or did you switch to zsh? AFAIK the new default is BASH, but it was zsh for a while.

IMO, your level of nerdiness is much higher if you change the default shell.

1
lemmy.world

I had to go back and check. Apple says that the default changed from bash to zsh in Catalina (10.15). I seem to recall a message coming up on the machine about zsh. I definitely remember poking around at config files and looking at iTerm2 vs. the default terminal app at the time.

Does that make me extra nerdy? IDK. I can tell you that I was more focused on "What's going to be comfortable to work with" vs. nerding out on shell differences.

I do miss homebrew now that I'm working on a Windows laptop.

4
w33n1sreply
lemmy.world

I do miss homebrew now that I’m working on a Windows laptop.

winget m'boy

1
lemmy.world

Ooh, worth a try. I'm not sure whether I have the necessary permissions, though. My work laptop is pretty locked down.

1

Good luck! No huge loss if it doesn't work though, at least in my opinion. I like it for finding and installing software, and bulk upgrading everything at once, and the ability to do it all remotely with relative ease. But it's not as powerful in terms of dependency management and whatnot, coming from POSIX package managers

1
mercreply
sh.itjust.works

Maybe I remember wrong, but my memory is that at one point MacOS had zsh as the default and then switched to BASH, and then maybe back to zsh again. But, since Internet search is broken these days, I can't find anything about that.

1

All I can really tell you is that I remember seeing a message about the new default being zsh, and that was back in 2020 or maybe 2021. So it def switched from something else to zsh, but whether it was bash -> zsh or zsh -> bash -> zsh...shrug

2
FedXreply
quokk.au

Yeah, I agree. It's quirky, its syntax is annoying, and a good ZSH setup is probably better... but I don't have the time to do an actual ZSH setup.

16
tylerreply
programming.dev

A good zsh setup is not better. That’s why I switched off of zsh after years, because it was slower, more bloated, and less intuitive than fish. And bash is ten times worse than zsh.

18
FedXreply
quokk.au

Huh, the more you know. My only experience with ZSH is when I briefly used Manjaro, and it seemed fine at the time... but now that I say that I think about it, "Manjaro defaulting to it," might have been a bit of a red flag...

6
tylerreply
programming.dev

Yeah to get the same setup in zsh you have to install a plugin manager and then quite a number of plugins. Most people default to omz (oh my zsh) but that’s the slowest way. If you pick through all the managers you can get a decent one, but even without a manager the overhead of loading plugins is just slower than building it in like fish does. Fish just is better. And I don’t think I’ve ever once needed posix syntax. If I need to run a script and it doesn’t have a shebang at the start then I just run > bash and start the script there.

15
FedXreply
quokk.au

Yup, that sounds exactly like what I do.

3

lol yeah. Like I thought I needed all this crazy stuff tacked on when in reality I just wanted sane defaults. The only thing I add to fish now is the spaceship prompt.

2

I'm not learning shit that can't run on everything.

Source : I got a fistfull of salesforce certs in order to toe the line in my previous job, and I am currently looking for work.

8

I use bash because gentoo's portage has a hard dependency on it so in my mind it doesn't make much sense to install and keep yet another shell just because colors and autocompletion. If they ever get rid of the bashisms in portage I'd surely consider moving to fish, but getting rid of the bashisms in portage means that portage could be ported to the BSDs one more time and we could have Gentoo/BSD again

2
lemmy.world

I use fish because it was the default in cachyos and decided to give it a fair shake. I like the built in syntax highlighting and fancy autocomplete but I miss bash scripting and built in commands that replace standard commands can be weird sometimes. I have not tried scripting fish, to lazy to learn yet another scripting language, especially if bash is the (almost) de-facto standard.

19

I've been using it for awhile now for the same reason, and think I'm going to switch back to sh as it has too many suggestions which I read and it interrupts my thoughts and slows me down.

2

I like having fish as an option, but don't think I'd ever use it as my default.

If I have a long command that uses long filenames, or I don't remember the syntax of something, I can just type "fish" and it'll open up a fish shell.

2
ferretreply
sh.itjust.works

You can always just continue using bash scripting, with a bash shebang in your scripts, if you miss it

17

That's what I do. Fish is great as interactive shell, scripts don't benefit that much from it and I can use what's familiar.

6
FedXreply
quokk.au

There's probably only two people who will get this joke... and I'm one of them.

12
Mr.Chewyreply
lemmy.world

Do you guys accept recruits? I'd also like to know! :'3

4
lime!reply
feddit.nu

considering the image is a link... idk man

5

No that's not Elrond, the princess you mean is Zelda.

2

I like it (am actually sponsoring) but I'm not sure development is still active. I hope the author finds the time and energy to work on it again it's someone else picks it up

1
lemmy.dbzer0.com

Sometimes I think I'm the only linux user who doesn't care about their terminal emulator. I use whatever came installed. I assume it's bash? I don't know, but anything i want to do is supported by all of them.

33
fourreply
lemmy.zip

Akchually, those are shells, not terminal emulators.

Which I guess confirms that you really don't care. Whatever works for you, works for you :)

62
semreply
piefed.blahaj.zone

What's the difference.

How does the virtual terminal factor in.

Why are some shells not login shells

What is a terminal these days and why does it mess up keypresses

7

The terminal emulator is the window displaying the text. That used to be a physical screen called a terminal. The program that decides what text to show is the shell.

23

A terminal emulator (such as xterm, tmux, or emacs) is responsible for displaying a pseudoterminal in a different context (such as an x server, another terminal, or an emacs buffer respectively). Terminals are divided into three types: virtual terminals (on boot or as presented by [C-]A-F<N>), ‘true’ terminals (exposed on serial ports), and pseudoterminals (controlled by other programs). Essentially, you have a virtual terminal running X running Xterm which controls a pseudoterminal with tmux attached controlling another pseudoterminal.

Login shells are a special flag set when launching shells, sometimes. They typically read different settings (e.g. Bash reads ~/.bash_profile instead of ~/.bashrc). Most shells will launch as a login shell if their command name (argv[0]) begins with a hyphen; Bash also allows explicit bash -l to run a login shell.

11
Valmondreply
lemmy.dbzer0.com

Yesh, I'm a not spending time configuring (and fixing) the shell.

If I want something hairy I'll use Python (or even C/C++).

2
fumreply
lemmy.world

I was looking for a mention of csh! Senior sysadmin at $DAYJOB uses it still.

3

Pretty much the whole semiconductor engineering industry is using it. We'll actually tcsh but csh

2
lemmy.ml

I can't begin to say how superior my fish rice is to any alternative. So I won't. And I'll leave yall to flame me for implying it.

17

All we ask of you is that you don't reheat it in the employee break room microwave.

21
anarchist.nexus

Fish is the best . Do not listen what other says just because it's easy to use does not make it a bad tool Also helix better then neovim and emacs
And zellij better then tmux
Micro better then nano Jj better then git A LOT

31

That's the only one I could confirm, but probably because my config game is weak.

2
lemmy.ml

JJ lacks too many features compared to git, it's easier to use but just less powerful. I think Helix and Zellij are good for that "batteries included" approach, but neovim and tmux are more powerful and allow much more customization IMO so those tools don't displace them for me. I think shell choices are less impactful, if you're writing scripts 90% of the time it'll have to be bash anyway, use what you like for the interactive shell though.

6

still don't really get along with jj. and why use a tmux-alike when konsole has the same functionality built in?

4

Jj better then git A LOT

Wow, you spelled mercurial really wrong

4
lemmy.ml

I think I'm using fish and it works great, I love alt+s thing and auto complete thingy.

14

Or if you are on ZSH: press escape twice. Does require OhMyZSH with sudo plugin.

3
Digitreply
lemmy.wtf

Huh. Alt+s. I forgot about that. I think maybe something in my tmux config makes it not work. Not to worry, I've made use of fish's abbreviations, and have other nice things, like I type tssr and space, and it types out "time sudo strat -r " for me.

Well over a decade using fish, and still finding new treats. It's so cushy out of the box, without even trying to learn it, it's easy to miss that there's so much more. I only started using abbr in the past year or so.

1

I learned that shortcut when someone was talking about shells. I like that I learn new stuff about Linux too.

1

When I installed freeBSD for the first time, I was so confused when !! didn't work.

3
lemmy.dbzer0.com

No such thing as a good shell... (I just want something that's both posix-compatible and good)

10
lemmy.ml

That's a paradox. POSIX shells are all bad because POSIX demands bad syntax.

You can have pain word strings without also having weird “variables auto-explode into words” bullshit.

That's why I use nushell. It has lists. You do cmd ...$some_list to call a command on arguments from a list.

12
Sivecanoreply
lemmy.dbzer0.com

I'm ok with that part, I'm talking more performance and convenience. POSIX isn't the most amazing but it's ok. And whether I like it or not, I'll have to use a posix-compatible shell if I want to run most scripts.

2

I luckily don't have to modify scripts these days so I'll just use bash to run them if there's no better alternative around. And usually it is, few things are only available as bespoke shell script

2
programming.dev

Funny story, in my first years of Linux, I always thought sh was the only way to run downloaded programs in the terminal. I must have seen it on some forum and learned it that way. Much later I learned that I could just type this ./program and run them.

14
feddit.org

Much later I learned that I could just type this ./program and run them.

TBF that does often require that you chmod +x them. Sometimes, that's not worth the effort ...

4

That actually makes sense. Maybe that was the reason why I saw it in the first place. Lazy people in works. :)

1

I'm so loving it although I'm still having to correct me on even the easiest shit (few hours ago l: invocation with an env var set tona path - "oh right spaces, oh right, path must be in quotes".

Still love it, just annoyed by my habit brain

2

i use zsh and i've been recently told by a friend that i look like this exact guy

12

Heh. Good stuff.

More! ;D I want to see all the shells, characterised so.

... Fish [over[1]]user here. Ooh, good burn. LOL.

[1: Not just user. Overuser. I do most of my scripting in fish. Think that's not overuse yet? ... I even wrote my own text editor in fish.]

4

I had nu on my Windows PC and I thought I could get away with it because I hate PowerShell so much, but then IT came and kicked it into quarantine. Now I'm zsh-ing on wsl.

Why didn't I install nu there? Can't remember.

6

As a ham-handed individual , I absolutely LOVE fish shell. Started using it like 3 years ago and never looked back.

5
semreply
piefed.blahaj.zone

How do you deal with when the guide has commands that only work in bash

7

Run 'bash' and then follow the guide, assuming it's too complex to tweak for fish.

12

you can run bash scripts in fish. The syntax is bash ./script.sh

Edit: I'm being unhelpful/funny. I just read through the fish manual, and it's so nice and agree that if it was just a bit more bash friendly it would have great uptake

8
exprreply
programming.dev

It's not getting POSIX compliance done, that's for sure. Or compatibility with normal scripts.

3

Almost nobody cares about these features for new shells. POSIX compatibility in my opinion is an anti-feature for interactive shells; for scripts, use the shell referenced in the shebang. There are even newer POSIX compatible shells like oil if you want one of these.

5

I guess I'm chad. bash ftw. every time. also, this is how you exit vim :q! lol j/k save first tho :wq but really just leave it open and ctrl-z and fg ffs

3
terranoidreply
lemmy.cafe

bottom right corner still

and dont forget to take your amlodipine

3

I feel seen.
I'm still a tcsh guy.
My trusty .tcshrc still has some aliases that have been their since the 90s.

1
aussie.zone

I'm pretty sure even FreeBSD has moved on now from csh to zsh

2
aussie.zone

Huh, I really thought it was zsh

Maybe that decision got overturned and replaced with sh prior to release

1
heliotropereply
retrofed.com

macOS switched to Zsh, replacing Bash. They also now ship pico instead of nano, for some reason.

1

I probably mixed them up, once upon a time they were the same OS to be fair hahaha

2