@@bashisobsolete.pythonismyn6321 Orthodoxy is extremely anti-vegan, yet it has the most harsh of lent rules, being almost vegan-like diet-wise, but that doesnt mean they are vegan or support any of the vegan views. It's too complicated to explain to non Christian, and pointless if you are actually a vegan.
@@elclippo4182 Thanks for pointing that out. Brandolini's Law might be one reason it's so difficult to be a political dissenter on TV. "That's all we have time for." PS: Not POSIX compliant? And I had such a high opinion of the O'REILLY books. ;-)
@@itsgalaxy2407 I use Fish because it's awesome. The way it handles autocomplete, it's functions and some of it's plugins make life in the terminal so damn nice! Paired with the Spacefish theme, Powerline fonts and a font that supports ligatures, just love it.
@@daniilorekhov9191 If I need a lecture from you on the comprehension of English language, then I will ask for it. Now run along, nothing more for you to see here.
The Posix standard states: _Applications should note that the standard PATH to the shell cannot be assumed to be either /bin/sh or /usr/bin/sh, and should be determined by interrogation of the PATH returned by getconf PATH , ensuring that the returned pathname is an absolute pathname and not a shell built-in_
@@mattfromeurope Luke thinks the location of /bin/sh is specified by POSIX standards, but it’s not. I referenced the official POSIX documentation by the Opengroup. Hope this helps.
@@zvezdan956 it uses the exact same terrible syntax and generally awful scripting language as bash. Fish actually is a good scripting language, unlike bash/zsh, with less cancer syntax and way more versatility
Small comment: If anyone is interested in actually using fish, then just set it as your login shell but leave the /bin/sh script interpreter as is. No harm in that except you will have to remember two different syntaxes.
That's what I did. I thought, that's what setting the default shell means. So the video confused me. Setting `/bin/sh` isn't even an option, I had in mind.
This will still cause fish-based annoyance. You would have to go through your profile files and make sure they are either fish compatible or have them run in a proper shell instead.
What? Thats a terrible idea. None of fish's features would be useful in logging in. And your running a buggy bloated shell for logging in with, so if it breaks your locked out of your system.
I tried that, but reverted it back almost instantly. But I'd really like a shell with a simplified lisp syntax. Maybe that't doable by adding features to the scopes REPL (scopes.rocks).
I don't care, I like Fish. I use it as my default shell. However, my /bin/sh is still set to Dash, because it _should_ be. I understand that, I really do. POSIX compliance is important where it is. However, I like Fish _because_ it's not POSIX compliant. I really like Fish as a scripting language, it makes much more sense to me than any POSIX compliant shell's syntax. However, I'm _not_ a sysadmin. I'm also _not_ a Linux elitist. _Nor_ a software dev. I'm just a simple woman who uses Linux because it works for her. Fish Shell works well for me, where POSIX is a nuisance, and all I need it for is to write my own shell scripts for my own purposes. My /bin/sh is still a POSIX shell, however, my default will always be Fish. Bite me.
@@mikejackson7230 yeah. It had me scratching my head. He replaced a bunch of stuff on his system with app images to reduce the number of packages he had installed and therefore "less bloat". Still not sure if he was joking.
@boy lasagna oh I know and I agree. But he was saying having fewer packages is less bloated. Which I guess you could make the argument it is but it's not very convincing to me. That's why I thought he was joking. But he seems very sincere in the vid.
Just because fish is not POSIX-compliant does not mean it should not be considered a "real" shell. Sure, it is stupid to symlink it to /bin/sh as it not a POSIX-compliant shell, but fish is very powerful as an interactive shell, and even as a scripting language, because it is not tied to some of the ridiculous syntax of POSIX shell. The syntax is a lot more natural. You might change your mind about fish if you try to write some scripts in it. I agree with DT that setting fish as the default *interactive* shell might be a good idea for some "beginner distributions".
Leading beginners straight to interactive fish use might be a mixed blessing, because even to the extent fish may be "nicer", such guidance will delay people's progress in learning sh.
@@gradientO Why? What does using fish interactively take away from your professional sysadmin work? You can still write your scripts in POSIX compliant shell script, but use fish as the interactive shell.
@@mitchelvalentino1569 I guess I learned some history today. Thought Bell Labs was responsible for POSIX. But it turns out it was a bit more of a team effort.
I absolutely agree that one should never change /bin/sh to a non-POSIX shell, but fish absolutely is a real shell with better interactive capabilites and a better scripting language.
It's not a real shell if it can't run standard shell scripts. It's a weird in-between where you do get an interactive prompt that is more useful for interacting with the system than something like Python, and it has its own script language, but it can't be used as default.
@@Ultr4noob So you've got dash to run POSIX scripts but it's not good for the other stuff, you've got a lot of Bash scripts already available that can do some stuff POSIX can't or it's less convenient, and you've got Zsh to use in the terminal itself as it has more features than Bash but is a bit too heavy to run POSIX scripts well. Fish is only really good for interactive use with no setup required whatsoever, e.g. on servers where you can't be arsed to copy over your preferred environment. It can't be /bin/sh, it can't be a login shell. Its scripting language might be good but it's certainly not as widely adopted as Bash and you can't quickly bodge together a script by copying pieces from other Bash scripts.
@@Ultr4noob Definitions don't matter. Practical use does. You aren't going to argue a Linux server into working. Tools exist to be used, if a shell can't be used as a shell, it's not a shell.
@@p_serdiuk Huh? Definitions don't matter? I don't use fish, but it most certainly is a shell by both definition and practicality. It's just not POSIX compliant. Did you have a stroke and forget that one of the most common uses of a shell (in fact, most likely THE most common use) is as a program running in a terminal emulator that users interactively use? Fish is good for that purpose apparently, which means it's a good shell for the majority of use people need out of a shell.
you pretend that this is just a short react, you pretend that he is joking, but actually this is an explosive display of pride and looking down upon DT which I totally get. But, ever heard of constructive and respectful criticism?
fish is a real shell, not being posix compiant doesn't make it not real. /bin/sh is not default shell, it is intended to be POSIX compliant shell, default shell is set per user and fish works fine as a default shell, unless scripts are missing a shebang.
Most imporantly: zsh is the epitome of bloat when it comes to shells, fish is a pretty neat alternative. I'm not exactly surprised DT has managed to confuse the "user's default shell" (the login shell) with the system default POSIX shell interpreter. It is, however, a little bit underwhelming that Luke chose to play along, in order to bash on fish (no pun intended). Fish is the Friendly INTERACTIVE SHell. There are separate sets of criteria for determining the cringeness and realness of interactive and scripting shells. There is no reason whatsoever for an interactive shell to be POSIX-compliant other than personal preference - maybe you love pasting random bash snippets into your terminal or just don't have the time to learn the differences in syntax - it's fine. That's why Luke uses two different shells: dash for /bin/sh and zsh for his interactive session. By the way, why isn't dash the default sh provider in Arch/Artix? You see, DT has almost made one good point. You can't just put #!/bin/sh in all your shell scripts unless you are certain they are indeed POSIX-compliant. Such mislabeled scripts are the main reason behind many distros being stuck with bash as /bin/sh. Therefore, mindless /bin/sh shebangs are much more harmful than bricking your system by linking /bin/sh to fish.
I been using fish for nearly two years, never have I ran into any problems running bash scripts. People just make videos for the hell of it these days. 🤦♂️
Is it just me or did you also think Marillion got shit once Fish left? My claim to fame is that I tripped over Fish's foot at Reading Festival in 1983 whilst he was meandering through the crowd.
@@terrydaktyllus1320 I would definitely not say they music become bad after the split. To me it just become a generic rock/progressive rock band, the one I like to listen from time to time, but nothing as mesmerizing as they used to be. They just become another band. Event Steve Hogarth once stated in an interview that he thought that they should have changed their name because they are something else.
Why is fish any worse than zsh? From what I've seen, fish strives to be a more modern yet reliable shell: It strives to be a relatively fast shell, being 4x times faster than zsh, and it gives you features that you have to look up in zsh by default, that you could just disable. Just because fish doesn't run shell scripts made for OTHER shells, maybe specifically POSIX-compatible, doesn't mean it isn't a good shell. The only upside of POSIX-compatible shells is the syntax that is... compatible with POSIX. Your definition of a shell seems to be "*POSIX-compatible* shells", rather than just a shell. And yes, fish *can* run these scripts, as if you execute a script with the shebang line, e.g. `#!/bin/sh`, it would just use a POSIX-compatible shell. FISH is better than ZSH mainly in the terms of speed, interactivity, sane defaults, and well, it's in the name: FRIENDLY syntax. Plus, FISH isn't even the problem in the first place, the default shell doesn't affect `/bin/sh` WHATSOEVER. And your scripts won't break. A default shell is just the one you automatically run interactively.
fish is not a "faster" shell because it is not a shell at all. It is also not faster unless you're a brainlet who uses oh-my-zsh. If you want to learn an entirely different language for an interactive shell because you're too dumb to learn sh, you got bigger problems.
I mean, tons of sources I've looked at online said that, and... I've said that your definition of a shell just seems to be POSIX-compatible ones, I mean, by that definition, stuff like elvish, nushell, marcel, and oil would all get thrown out (as well as RC I'm pretty sure) and they're all shells, though not exactly ready yet for modern usage. About the "entirely new language" part, it really isn't. It's basically very similar to bash but restructured in a way that would make it easy to read, specifically for beginner and for people who like to have scripts that are understandable by humans. POSIX-compatible shells aren't that hard to "learn", nor is fish for that matter, but fish overall has the better syntax, in my opinion.
@@LukeSmithxyz Fish is not a shell? Let’s take a look at the history of shells on Unices. In the beginning, there was a small shell written in assembly language. Later, it was replaced by the Thompson shell. The Thompson shell had as name in the filesystem /bin/sh-for “shell”. Then, in v7, the Thompson shell was renamed “osh”-“old shell”-and /bin/sh became a new shell, the Bourne shell. Later, more shells appeared in the wide land of Unices, including the C shell and the Korn shell. Now, POSIX has a Command Language based in an old Korn shell, as well as a utility “sh” to use the Command Language. The land of shells is so versatile with many incompatibilities and differing syntaxes, that Fish by all means is a shell. If you were to take the status “shell” from stuff, shouldn’t that include dash, bash, and zsh, which never were The One /bin/sh?
@@LukeSmithxyz If fish isn't a shell that's like saying Powershell isn't a shell, or command.com from MSDOS or cmd.exe in modern windows. POSIX-compliance does not determine if something's a shell
I don't think really any fish users actually use fish as their bin/sh I think as long as you only use fish in your terminal (you can just set up bash to run fish when a terminal is opened) it's totally fine. Just don't use it as your system wide shell.
wtf, I dont get this rant. Fish has its own syntax and its okay. By that logic every program ever written should be C compliant, so no java/python/go/whatever, because MUH standards. Actually my /bin/sh is linked to /bin/bash even tho default shell is fish.
Luke, when you're talking about "using foo as your shell", you should really distinguish between using foo as your CLI and using foo to run sh scripts with. Aliasing sh to fish is certainly stupid, but running fish in your terminal emulator if that's what you're into is slightly less stupid.
Setting /bin/sh to fish is utter bs. And some people (specially noob programmers) do it just because fish comes with syntax highlighting and other stuff that they don't need to write configs for.
Why the constant recommendation not to set fish as your default login shell? I've used it for a long time without any problems (I use ZSH now). /bin/sh does not symlink to the default shell of your user, using fish as your default shell will not make /bin/sh symlink to /bin/fish and break all existing shellscripts. If /bin/sh were symlinked to a users default shell, then how would it even decide what to symlink to if one user uses fish and the other ZSH. Obviously symlinking /bin/sh -> /bin/fish is dumb, but changing your own shell to fish won't break anything other than having to rewrite your .profile etc.
It's probably a joke because DT has said multiple times that you should either start fish in your bash/zshrc or map your terminal keybinding as something like st -e fish because otherwise it'd cause problems with the scripts
When in the terminal (not scripting), I prefer writing loops in Fish over POSIX compliant shells. They are much less verbose and easier to recall. However, I write all my scripts in bash to be compatible with any Unix system. Could you not get the best of both worlds, by having your default sh link to a POSIX compliant shell, but just eval fish in the rc when using your terminal?
I've used fish for years and never really knew about the POSIX compliance. Honestly, what led me to this video is that I noticed my terminal started looking different (colors changed) when I've used the same fish config for basically 2 years. Not sure what is happening. Anyway, I think moving back to bash is the way to go.
I set my default shell to fish. Almost everything is better with fish. But I agree, that linking `/bin/sh/` to fish is stupid. I just changed it using `chsh`. I think, it's a good thing, that fish takes stuff away. The syntax is an improvement to bash in some ways, and can therefore only be a replacement. The bad thing is, many old scripts will get incompatible. So if you would really want to add a non-posix-compliant shell to your distro as a defult shell, you could also just use something, that doesn't look in the slightest like bash.
Ikr. It's just user friendly. I don't care about 'every program has to be as small and debloated as possible!'. Let me just use my terminal in peace, elitist.
I saw your video on null hypothesis testing and really enjoyed it. I'm currently taking an advanced biometry course and you echoed a lot of the same doubts I've had ever since I took the class. Somewhere In the video you mentioned the turkey problem and was really intrigued. It would be awesome if you made a video on that one day.
Luke, touched on interactive vs non-interactive. But for those new to Linux OSs. There is both an interactive shell and a non-interactive shell. On most systems they are actually different. On Debian systems the non-interactive shell is usually Dash and the interactive is usually Bash. If you run a script with #!/bin/sh you are running the non-interactive shell. If you are at a command prompt you are running the interactive shell. You can change your interactive shell or you can change your non-interactive shell or you can change both. Most videos taking about changing shells are usually talking about changing the interactive shell. Also have a Blessed Second week of Lent! :)
LoL, honestly though I use fish every day, it is a convenient interactive shell for work. I know bash quite well too, but for interactive use I prefer fish. To the extent that fish syntax changes, it usually changes to be more like posix shell.
You are free to use bash-specific features when a script starts with "#!/usr/bin/env bash" but you are /not/ free to use those features when the script starts with "#!/bin/sh" even if sh is symlinked to bash. That is because bash behaves /differently/ when it is invoked via the name "sh" in that it will attempt to mimic POSIX mode as best it can in that case. So these two situations are not equivalent. Read the "INVOCATION" section of the bash man page for more details.
I do remember watching dt review a linux distro that had fish as the default shell and he said something like “fish should be the default shell on more distress don't know if it was satirical or not lol
bash is POSIX compliant only if started in POSIX mode with '--posix'. Otherwise, it has a lot of none-POSIX things like '[[' , arrays, .... and so on. The point is that a script written in bash might not be entirely POSIX, but a POSIX script can be run by bash with no problem.
Fish is of course a shell, but not POSIX compliant. Of course /bin/sh must be POSIX compliant. But what about login shell (chsh -s /usr/bin/fish)? I use Fish as login shell and haven't met any difficulties.
interactive shell and non-interactive shell is different. You can set interactive shell as fish but you shouldn't set non-interactive shell as fish unless you intended to run only fish script. Fish has different syntax than POSIX shell script and very likely breaks your shell script.
Fish is my default shell. However, /bin/sh is indeed a symbolic link to bash. Fish is a very good interactive shell, which works "out of the box"; however, I don't use it for scripting. Making your default shell is not the same as changing the /bin/sh symbolic link.
/bin/sh is not even a symlink to a user's default shell, it's a symlink to the POSIX-compliant shell of choice of a given OS/distro. In Debian it's dash, in FreeBSD it's ksh, in most distros that aren't based on Debian it's usually bash, while some even use zsh. Fedora, my distro of choice, symlinks it to bash. Even if I do use chsh to change my default shell, so every time I open a terminal it runs fish, /bin/sh *will continue to be a symlink to bash*, and all script with #!/bin/sh will continue to run with bash on my machine. The only way that this can be changed, as far as I'm aware, is to use 'sudo ln -sf' to change replace the /bin/sh symlink with a symlink to something else. I'm pretty sure that even if you 'sudo chsh' to change the root shell to fish (which is something you absolutely should not do), /bin/sh will still be a symlink to bash (or dash, or whatever the default was).
Setting your default shell to fish DOES NOT mean modifying /bin/sh. Symlinking /bin/sh to something not POSIX compatible is an error. Using anything from /etc/shells as default shell is completely valid use case. Also: Fish is best shell for interactive usage. Zsh is not even close.
Is there a common subset of features between fish and posix-shell one can sanely use to write scripts? Or another way for script writers to target both?
The conjunction of fish syntax with actual shell syntax is so low that you're not going to be able to do much in that abomination. Frankly, even the fish people will probably tell you not to write scripts in fish. It's supposed to be merely an "interactive" shell. As I said here, it is outclassed by zsh which can handle POSIX shell too.
yeah i can't go back. that feature alone. hopefully nsh will add it. though looks like development has stalled edit: just realized nushell has the feature too. bye fish 👋
URGENT! Read this:
lukesmith.xyz/deletion
Fuck jannies and fuck Google
good thing i began archiving your channel a while ago lol
also wtf luke your videos are bloat
the link is broken.
still broken
@@spfeu
Ah, yes. Boomer rants negatively about new fishing regulations.
Default Runescape character no longer interested in lvl 99 Fishing
rants negatively? When do you rant positively?
can't go anywhere on the web these days without getting brexit in your face, shocking
Somebody read Linkola....
not only fish. he hates everything bro.
Orthodox Christian beats up Protestant for eating fish on Friday during Lent
Comment underrated
oh, the anti-vegan irony
**BRUTALLY**
@@bashisobsolete.pythonismyn6321 Orthodoxy is extremely anti-vegan, yet it has the most harsh of lent rules, being almost vegan-like diet-wise, but that doesnt mean they are vegan or support any of the vegan views. It's too complicated to explain to non Christian, and pointless if you are actually a vegan.
@@kc1087 yes i know. have you read uncle luke's anti vegan rant?
>crying soijack Luke
>"Noooo you can't use Fish it's not POSIX-compliantarinoo"
>smug comfy pepe Distrotube smirking at his computer
I don't use fish BTW, plz no bully
I don't understand a word what you're talking about
@@DavidJBurbridge Of course we don't , nice satire.
hahahaha
Luke slowly drifting away from the stoic ideal of a rigid UA-cam channel and going with the flow making more and more normie-like content
Please don't bash the normies.
I can't wait to buy a Luke Smith hoodie and other great merch!
@@yt-xe8ws nothing about his actions indicate that it is the primary goal; only that it is a goal.
Please donate!
@@yt-xe8ws people do still make videos for fun
9 minute video reaction to a 1 minute video 👌🏽
9:1 ratio is just perfect for a reaction!
Correcting mistakes is always costlier than making them - but not as costly as leaving them uncorrected.
That‘s Brandolini‘s Law in a nutshell. Nutshell isn’t POSIX compliant btw.
@@elclippo4182 Thanks for pointing that out. Brandolini's Law might be one reason it's so difficult to be a political dissenter on TV. "That's all we have time for." PS: Not POSIX compliant? And I had such a high opinion of the O'REILLY books. ;-)
I like perl more than python, so I symlinked /usr/bin/python to /usr/bin/perl, and now my system is somehow broken! Help!
what????????????
serves you right for liking perl
Good on you, bro.
As my dearly department mom used to say: "No problem's too hard to solve with a well crafted regex"
Controversy in the POSIX compliant shell world. This is sure to go viral.
Fish is not POSIX-complaint
Is posix reddit?
@@gradientO Neither is Bash.
@@owainharris bash has a POSIX-compliant mode. But honestly I use dash because it's much less bloated.
@@itsgalaxy2407 I use Fish because it's awesome. The way it handles autocomplete, it's functions and some of it's plugins make life in the terminal so damn nice! Paired with the Spacefish theme, Powerline fonts and a font that supports ligatures, just love it.
Luke smith is my favorite reaction youtuber and social media influencer
If you need influencers then can I suggest you grow a brain and maybe start to think for yourself.
Don't forget content creator!
@@terrydaktyllus1320 lol that was obviously a joke...
@@daniilorekhov9191 If I need a lecture from you on the comprehension of English language, then I will ask for it. Now run along, nothing more for you to see here.
@@terrydaktyllus1320 wow so edgy so cool
Luke has officially became drama queen.
@@shaurz gnutuber/linfluencer
I literally came back from a sea of reaction videos recommended to me to see this
Are we in hell
Were we ever not in hell?
We were always in hell. Satan just got lazy.
@@bruderdasisteinschwerermangel Hell doesn't have Linux, I think.
Everything works on Windows, including the servers.
DT didn't really make it clear that it was a joke and i really debated whether i had wasted all my time writing POSIX compliant scripts.
he's got a video praising Fish... and another where he considers that Garuda's choice of Fish over other options is a great deal!!!
@@48853tony he is a copycat.
The Posix standard states:
_Applications should note that the standard PATH to the shell cannot be assumed to be either /bin/sh or /usr/bin/sh, and should be determined by interrogation of the PATH returned by getconf PATH , ensuring that the returned pathname is an absolute pathname and not a shell built-in_
... what?
@@mattfromeurope Luke thinks the location of /bin/sh is specified by POSIX standards, but it’s not. I referenced the official POSIX documentation by the Opengroup. Hope this helps.
There are standards and then there's what people actually do.
@@SisypheanRoller and what people actually do is use all matter of stuff as the default shell. Sooooo using /bin/sh is still bad.
actually looking forward to the oh-my-zsh rant.
So many confuse the plugin manager with the actual shell. It's bloated anyway. I love zsh shell though
Oh me too.
My coworkers probably wouldn't because I supply them with my own rants about it all the time.
zsh is shit lol
@@swirl6996 why
@@zvezdan956 it uses the exact same terrible syntax and generally awful scripting language as bash.
Fish actually is a good scripting language, unlike bash/zsh, with less cancer syntax and way more versatility
06:48 - Hey mom, it's me - I am on live TV, apparently.
You are famous now.
jesus says: "be fishers" -- you don't hate jesus, do you?
When you are so based and redpilled, you need to apologize for half a minute for making a response video
Small comment: If anyone is interested in actually using fish, then just set it as your login shell but leave the /bin/sh script interpreter as is. No harm in that except you will have to remember two different syntaxes.
Darn, I just posted essentially the same thing before finding and reading your comment, but yes, you're absolutely right.
That's what I did. I thought, that's what setting the default shell means. So the video confused me. Setting `/bin/sh` isn't even an option, I had in mind.
This will still cause fish-based annoyance. You would have to go through your profile files and make sure they are either fish compatible or have them run in a proper shell instead.
What? Thats a terrible idea. None of fish's features would be useful in logging in. And your running a buggy bloated shell for logging in with, so if it breaks your locked out of your system.
@@LabiaLicker I never had that problem.
Next time on Maury, Distrotube and the Unaboomer argue about which shell is best shell... And who's actually the father.
I can't wait for luke reacts to derek react to luke reacting derek
We are in a react loop...
Yup... this gonna be interesting.
Oh gosh you have an Elf Yamada pfp... I'm getting Post Eromanga Sensei PTSD now. XD
Reactception?
GNU/Lenin vs Vim Diesel.
😂😂😂
This is extremely big brained.
This should be pinned
GNU/York, GNU/York, big tty of dreams,
and every ping and foo fork ain't always got git schemes.
soydev has panic attack over meaningless non existant things
00:27 "If you are new to the channel this might be greek or something like that." But I ... I am greek
Atm my keyboard doesn't even the letters to say your name
So, you're at home, hahahah
Your name is a multiplication of so many math variables
@@sudeepkuchara5287 hahaha i'm sorry
@@tonnylins exactly, hahaha
people are unironically NOT using a lisp repl as their shell? holy cringe.
I tried that, but reverted it back almost instantly.
But I'd really like a shell with a simplified lisp syntax. Maybe that't doable by adding features to the scopes REPL (scopes.rocks).
imagine not writing your own shell yikes
I don't care, I like Fish. I use it as my default shell.
However, my /bin/sh is still set to Dash, because it _should_ be.
I understand that, I really do. POSIX compliance is important where it is.
However, I like Fish _because_ it's not POSIX compliant.
I really like Fish as a scripting language, it makes much more sense to me
than any POSIX compliant shell's syntax.
However, I'm _not_ a sysadmin. I'm also _not_ a Linux elitist. _Nor_ a software dev.
I'm just a simple woman who uses Linux because it works for her.
Fish Shell works well for me, where POSIX is a nuisance,
and all I need it for is to write my own shell scripts for my own purposes.
My /bin/sh is still a POSIX shell, however, my default will always be Fish. Bite me.
do not pretend to be a woman
Is anybody gonna tell Luke that dt "debloated" his system by replacing all the programs with appimages? No? Okay.
Some did. And yes, that was the pinnacle of stupidity! lmfao
"it's not cringe if I do it, it's a learning moment"
Hahaha very nice
Luke's brain couldn't handle it and he started having a stroke at the end
"Debloat your system with appimages" god i cant stand dt anymore.
Did he actually say that unironically?
he also soys out over programs written in rust lol
@@mikejackson7230 yes
@@mikejackson7230 yeah. It had me scratching my head. He replaced a bunch of stuff on his system with app images to reduce the number of packages he had installed and therefore "less bloat". Still not sure if he was joking.
@boy lasagna oh I know and I agree. But he was saying having fewer packages is less bloated. Which I guess you could make the argument it is but it's not very convincing to me. That's why I thought he was joking. But he seems very sincere in the vid.
Just because fish is not POSIX-compliant does not mean it should not be considered a "real" shell. Sure, it is stupid to symlink it to /bin/sh as it not a POSIX-compliant shell, but fish is very powerful as an interactive shell, and even as a scripting language, because it is not tied to some of the ridiculous syntax of POSIX shell. The syntax is a lot more natural. You might change your mind about fish if you try to write some scripts in it. I agree with DT that setting fish as the default *interactive* shell might be a good idea for some "beginner distributions".
No one would use fish for serious work
@@gradientO Why not? I use fish for real work on a daily basis.
@@gradientO Sorry, didn't realize system administration is the only legitimate profession.
Leading beginners straight to interactive fish use might be a mixed blessing, because even to the extent fish may be "nicer", such guidance will delay people's progress in learning sh.
@@gradientO Why? What does using fish interactively take away from your professional sysadmin work? You can still write your scripts in POSIX compliant shell script, but use fish as the interactive shell.
Fun fact: POSIX was named by Richard Stallman, the same man behind GNU Emacs :)
Half that is true.
Stall also used a LISP and a pack of emu's to do it.
@@WorBlux You lost me. Care to elaborate? Which half is untrue? And what did Stallman use a LISP and a pack of emus to do? Thanks.
it stands for Piece Of Shit Interface
@@desktorp well said
@@mitchelvalentino1569
I guess I learned some history today. Thought Bell Labs was responsible for POSIX. But it turns out it was a bit more of a team effort.
I absolutely agree that one should never change /bin/sh to a non-POSIX shell, but fish absolutely is a real shell with better interactive capabilites and a better scripting language.
It's not a real shell if it can't run standard shell scripts. It's a weird in-between where you do get an interactive prompt that is more useful for interacting with the system than something like Python, and it has its own script language, but it can't be used as default.
@@Ultr4noob Run existing executables, provide a good syntax for use in the terminal, run shell-specific scripts, and run POSIX scripts.
@@Ultr4noob So you've got dash to run POSIX scripts but it's not good for the other stuff, you've got a lot of Bash scripts already available that can do some stuff POSIX can't or it's less convenient, and you've got Zsh to use in the terminal itself as it has more features than Bash but is a bit too heavy to run POSIX scripts well. Fish is only really good for interactive use with no setup required whatsoever, e.g. on servers where you can't be arsed to copy over your preferred environment. It can't be /bin/sh, it can't be a login shell. Its scripting language might be good but it's certainly not as widely adopted as Bash and you can't quickly bodge together a script by copying pieces from other Bash scripts.
@@Ultr4noob Definitions don't matter. Practical use does. You aren't going to argue a Linux server into working. Tools exist to be used, if a shell can't be used as a shell, it's not a shell.
@@p_serdiuk Huh? Definitions don't matter? I don't use fish, but it most certainly is a shell by both definition and practicality. It's just not POSIX compliant. Did you have a stroke and forget that one of the most common uses of a shell (in fact, most likely THE most common use) is as a program running in a terminal emulator that users interactively use? Fish is good for that purpose apparently, which means it's a good shell for the majority of use people need out of a shell.
you pretend that this is just a short react, you pretend that he is joking, but actually this is an explosive display of pride and looking down upon DT
which I totally get. But, ever heard of constructive and respectful criticism?
fish is a real shell, not being posix compiant doesn't make it not real. /bin/sh is not default shell, it is intended to be POSIX compliant shell, default shell is set per user and fish works fine as a default shell, unless scripts are missing a shebang.
Most imporantly: zsh is the epitome of bloat when it comes to shells, fish is a pretty neat alternative.
I'm not exactly surprised DT has managed to confuse the "user's default shell" (the login shell) with the system default POSIX shell interpreter. It is, however, a little bit underwhelming that Luke chose to play along, in order to bash on fish (no pun intended).
Fish is the Friendly INTERACTIVE SHell. There are separate sets of criteria for determining the cringeness and realness of interactive and scripting shells. There is no reason whatsoever for an interactive shell to be POSIX-compliant other than personal preference - maybe you love pasting random bash snippets into your terminal or just don't have the time to learn the differences in syntax - it's fine.
That's why Luke uses two different shells: dash for /bin/sh and zsh for his interactive session. By the way, why isn't dash the default sh provider in Arch/Artix?
You see, DT has almost made one good point. You can't just put #!/bin/sh in all your shell scripts unless you are certain they are indeed POSIX-compliant. Such mislabeled scripts are the main reason behind many distros being stuck with bash as /bin/sh. Therefore, mindless /bin/sh shebangs are much more harmful than bricking your system by linking /bin/sh to fish.
how can it be friendly if a giant robot arm with a knife comes out of my computer and stabs me 5 times in the heart if i try and type sudo !! huh????
tell him that there is ShellCheck - a tool to find the incompatibilities with POSIX sh
It's like DT is his child and he starts rebelling as he enters puberty.
huh
The whole argument is summed up in the last 3 seconds
The fact that Luke just had to explain what a default shell is shows that his subscription base is getting bloated. Feels bad, man.
hahahahahahahaha, so true.
I been using fish for nearly two years, never have I ran into any problems running bash scripts. People just make videos for the hell of it these days. 🤦♂️
Well of course Fish is not a shell. Fish is a great Scottish musician who made Marillion's music so magical!
Is it just me or did you also think Marillion got shit once Fish left? My claim to fame is that I tripped over Fish's foot at Reading Festival in 1983 whilst he was meandering through the crowd.
@@terrydaktyllus1320 I would definitely not say they music become bad after the split. To me it just become a generic rock/progressive rock band, the one I like to listen from time to time, but nothing as mesmerizing as they used to be. They just become another band. Event Steve Hogarth once stated in an interview that he thought that they should have changed their name because they are something else.
I think he was serious in both cases. Why would you intentionally even lead the newbies that far away to begin with ?
He Is being serious
@@twb0109 no way, he can't be that dumb, can he?
WAOW A react video from my favorite CONTENT CREATOR :o
Our favorite default Runescape character is at it again!
Why is fish any worse than zsh? From what I've seen, fish strives to be a more modern yet reliable shell: It strives to be a relatively fast shell, being 4x times faster than zsh, and it gives you features that you have to look up in zsh by default, that you could just disable. Just because fish doesn't run shell scripts made for OTHER shells, maybe specifically POSIX-compatible, doesn't mean it isn't a good shell. The only upside of POSIX-compatible shells is the syntax that is... compatible with POSIX. Your definition of a shell seems to be "*POSIX-compatible* shells", rather than just a shell. And yes, fish *can* run these scripts, as if you execute a script with the shebang line, e.g. `#!/bin/sh`, it would just use a POSIX-compatible shell. FISH is better than ZSH mainly in the terms of speed, interactivity, sane defaults, and well, it's in the name: FRIENDLY syntax. Plus, FISH isn't even the problem in the first place, the default shell doesn't affect `/bin/sh` WHATSOEVER. And your scripts won't break. A default shell is just the one you automatically run interactively.
fish is not a "faster" shell because it is not a shell at all. It is also not faster unless you're a brainlet who uses oh-my-zsh.
If you want to learn an entirely different language for an interactive shell because you're too dumb to learn sh, you got bigger problems.
I mean, tons of sources I've looked at online said that, and... I've said that your definition of a shell just seems to be POSIX-compatible ones, I mean, by that definition, stuff like elvish, nushell, marcel, and oil would all get thrown out (as well as RC I'm pretty sure) and they're all shells, though not exactly ready yet for modern usage.
About the "entirely new language" part, it really isn't. It's basically very similar to bash but restructured in a way that would make it easy to read, specifically for beginner and for people who like to have scripts that are understandable by humans. POSIX-compatible shells aren't that hard to "learn", nor is fish for that matter, but fish overall has the better syntax, in my opinion.
@@LukeSmithxyz Fish is not a shell? Let’s take a look at the history of shells on Unices.
In the beginning, there was a small shell written in assembly language. Later, it was replaced by the Thompson shell. The Thompson shell had as name in the filesystem /bin/sh-for “shell”. Then, in v7, the Thompson shell was renamed “osh”-“old shell”-and /bin/sh became a new shell, the Bourne shell. Later, more shells appeared in the wide land of Unices, including the C shell and the Korn shell. Now, POSIX has a Command Language based in an old Korn shell, as well as a utility “sh” to use the Command Language.
The land of shells is so versatile with many incompatibilities and differing syntaxes, that Fish by all means is a shell. If you were to take the status “shell” from stuff, shouldn’t that include dash, bash, and zsh, which never were The One /bin/sh?
@@LukeSmithxyz If fish isn't a shell that's like saying Powershell isn't a shell, or command.com from MSDOS or cmd.exe in modern windows. POSIX-compliance does not determine if something's a shell
He might also say that Python isn't a real programming language because it's not compatible with C.
whats next cooking videos?
i bet 100 he'll do fish recipes
I don't think really any fish users actually use fish as their bin/sh
I think as long as you only use fish in your terminal (you can just set up bash to run fish when a terminal is opened) it's totally fine. Just don't use it as your system wide shell.
On my FreeBSD system I actually have /bin/sh lol
Haha same ! I was shocked the first time I noticed it, I was like wtf freeBSD?
yup, same...
Bourne shell is still an actual thing on FreeBSD
@@dndlnx yeah I'm pretty sure it is on openbsd and netbsd too. I mean I don't know why it isn't on Linux.
@@samzx81 It’s the Bell Labs shell and GNU rewrote the Unix shell under a “free-er license” simple as that.
I don't know if I've ever cared so little about something while still being oddly entertained by it.
wtf, I dont get this rant. Fish has its own syntax and its okay. By that logic every program ever written should be C compliant, so no java/python/go/whatever, because MUH standards. Actually my /bin/sh is linked to /bin/bash even tho default shell is fish.
Luke, when you're talking about "using foo as your shell", you should really distinguish between using foo as your CLI and using foo to run sh scripts with. Aliasing sh to fish is certainly stupid, but running fish in your terminal emulator if that's what you're into is slightly less stupid.
He's just wrong though, he seems to think `chsh` will change what /bin/sh points to, I doubt he's actually changed it manually.
Nobody sets /bin/sh as fish since it is Friendly Interactive SHell. And the main word is "interactive". POSIX sucks by the way.
Now I want an OhMyZsh video
Setting /bin/sh to fish is utter bs. And some people (specially noob programmers) do it just because fish comes with syntax highlighting and other stuff that they don't need to write configs for.
@@jdeep7 I would say powershell is real shell but can't say same for fish
Why the constant recommendation not to set fish as your default login shell? I've used it for a long time without any problems (I use ZSH now). /bin/sh does not symlink to the default shell of your user, using fish as your default shell will not make /bin/sh symlink to /bin/fish and break all existing shellscripts. If /bin/sh were symlinked to a users default shell, then how would it even decide what to symlink to if one user uses fish and the other ZSH.
Obviously symlinking /bin/sh -> /bin/fish is dumb, but changing your own shell to fish won't break anything other than having to rewrite your .profile etc.
What next? An anime wallpaper?
It's probably a joke because DT has said multiple times that you should either start fish in your bash/zshrc or map your terminal keybinding as something like st -e fish because otherwise it'd cause problems with the scripts
When in the terminal (not scripting), I prefer writing loops in Fish over POSIX compliant shells.
They are much less verbose and easier to recall.
However, I write all my scripts in bash to be compatible with any Unix system.
Could you not get the best of both worlds, by having your default sh link to a POSIX compliant shell, but just eval fish in the rc when using your terminal?
I really enjoyed your Minecraft Let's Play series! Where can I donate to get access to your Discord?
I've used fish for years and never really knew about the POSIX compliance. Honestly, what led me to this video is that I noticed my terminal started looking different (colors changed) when I've used the same fish config for basically 2 years. Not sure what is happening. Anyway, I think moving back to bash is the way to go.
there are 2 distrotubes in the screen, i'm confused
Default Runescape character gets jealous of another players fishing level.
DistroTube is pioneering a new genre on UA-cam: the Luke Smith trigger video.
they both look like different variation of the runescape default man
One of them being bloated..
@@TehGettinq maxed out the BMI stats of his characters
A thumbnail I never expected to see in this channel.
Gigachad demonstrating dominance to soydev -2021 colourized
I set my default shell to fish. Almost everything is better with fish.
But I agree, that linking `/bin/sh/` to fish is stupid. I just changed it using `chsh`.
I think, it's a good thing, that fish takes stuff away. The syntax is an improvement to bash in some ways, and can therefore only be a replacement.
The bad thing is, many old scripts will get incompatible.
So if you would really want to add a non-posix-compliant shell to your distro as a defult shell, you could also just use something, that doesn't look in the slightest like bash.
yeah, but fish doesn't try to replace a posix shell, "so many old scripts will get incompatible." isn't a downside, it's the point.
I use fish with no negative effects. The reason: I don't use other peoples' scripts.
Tbh i use fish daily and I love it
Ikr. It's just user friendly. I don't care about 'every program has to be as small and debloated as possible!'. Let me just use my terminal in peace, elitist.
"Bluah muhwa blouha yhea whatever video is over"
Meh, you can pry Fishshell from my dead, cold hands.
I saw your video on null hypothesis testing and really enjoyed it. I'm currently taking an advanced biometry course and you echoed a lot of the same doubts I've had ever since I took the class. Somewhere In the video you mentioned the turkey problem and was really intrigued. It would be awesome if you made a video on that one day.
Luke, touched on interactive vs non-interactive. But for those new to Linux OSs. There is both an interactive shell and a non-interactive shell. On most systems they are actually different. On Debian systems the non-interactive shell is usually Dash and the interactive is usually Bash. If you run a script with #!/bin/sh you are running the non-interactive shell. If you are at a command prompt you are running the interactive shell. You can change your interactive shell or you can change your non-interactive shell or you can change both. Most videos taking about changing shells are usually talking about changing the interactive shell. Also have a Blessed Second week of Lent! :)
But I installed Fish in my Gentoo machine when Luke said Fish was the best shell.
LoL, honestly though I use fish every day, it is a convenient interactive shell for work. I know bash quite well too, but for interactive use I prefer fish.
To the extent that fish syntax changes, it usually changes to be more like posix shell.
I just use whatever Debian uses. The colors kinda freak me out if it's not ls anyways.
Well, Debian uses dash as its default shell as well.
You're a real youtuber now !
fish?? what fish?? Tilapia? What is this hacker stuff i came here after looking for a parmesan recipe
Is that a based.cooking reference?
What about #!/usr/bin/env sh ?
You are free to use bash-specific features when a script starts with "#!/usr/bin/env bash" but you are /not/ free to use those features when the script starts with "#!/bin/sh" even if sh is symlinked to bash. That is because bash behaves /differently/ when it is invoked via the name "sh" in that it will attempt to mimic POSIX mode as best it can in that case. So these two situations are not equivalent. Read the "INVOCATION" section of the bash man page for more details.
I didn't even though about linking /bin/sh to something else than a posix shell, who would do that ? why ??
Some people use fish precisely because of the different syntax.
/bin/sh should always be posix compliant though.
You got the best video outros out there.
> reacting to a 0:49 minute video
9:10 minutes
I do remember watching dt review a linux distro that had fish as the default shell and he said something like “fish should be the default shell on more distress don't know if it was satirical or not lol
bash is POSIX compliant only if started in POSIX mode with '--posix'. Otherwise, it has a lot of none-POSIX things like '[[' , arrays, .... and so on.
The point is that a script written in bash might not be entirely POSIX, but a POSIX script can be run by bash with no problem.
Fish is of course a shell, but not POSIX compliant. Of course /bin/sh must be POSIX compliant. But what about login shell (chsh -s /usr/bin/fish)? I use Fish as login shell and haven't met any difficulties.
interactive shell and non-interactive shell is different. You can set interactive shell as fish but you shouldn't set non-interactive shell as fish unless you intended to run only fish script. Fish has different syntax than POSIX shell script and very likely breaks your shell script.
>emojis in the title
what the fuck is next, all caps?
Fish is my default shell. However, /bin/sh is indeed a symbolic link to bash. Fish is a very good interactive shell, which works "out of the box"; however, I don't use it for scripting. Making your default shell is not the same as changing the /bin/sh symbolic link.
/bin/sh is not even a symlink to a user's default shell, it's a symlink to the POSIX-compliant shell of choice of a given OS/distro. In Debian it's dash, in FreeBSD it's ksh, in most distros that aren't based on Debian it's usually bash, while some even use zsh. Fedora, my distro of choice, symlinks it to bash.
Even if I do use chsh to change my default shell, so every time I open a terminal it runs fish, /bin/sh *will continue to be a symlink to bash*, and all script with #!/bin/sh will continue to run with bash on my machine.
The only way that this can be changed, as far as I'm aware, is to use 'sudo ln -sf' to change replace the /bin/sh symlink with a symlink to something else. I'm pretty sure that even if you 'sudo chsh' to change the root shell to fish (which is something you absolutely should not do), /bin/sh will still be a symlink to bash (or dash, or whatever the default was).
if it was a joke, the joke was to make a bunch of noobs to switch their default shell to fish. i mean that's kind of mean.
Bashing on Fish: Inception.
Setting your default shell to fish DOES NOT mean modifying /bin/sh. Symlinking /bin/sh to something not POSIX compatible is an error. Using anything from /etc/shells as default shell is completely valid use case.
Also: Fish is best shell for interactive usage. Zsh is not even close.
In some distros like Debian, */bin/sh* symlinks to */bin/dash* and in some others like NixOS */bin/sh* symlinks to */bin/bash --posix*
All i got in my rivers are fish, we don't have no shells here. :/
Is there a common subset of features between fish and posix-shell one can sanely use to write scripts? Or another way for script writers to target both?
The conjunction of fish syntax with actual shell syntax is so low that you're not going to be able to do much in that abomination. Frankly, even the fish people will probably tell you not to write scripts in fish. It's supposed to be merely an "interactive" shell. As I said here, it is outclassed by zsh which can handle POSIX shell too.
Got it. Thanks for the reply.
2:00 hey my default shell is fish and I LOVE it.
Cossacks operating system...?
I mean, does POSIX compliance really mean as much as it used to, If I remember right, it's easier to script in fish, and you can run Python from it.
Luke, after you experience fish's auto-suggestions, you'll wish other shells had it.
really? it is not a fish-only feature, zsh has it too.
@@pear_apr It can be added to zsh, but it's not built-in.
yeah i can't go back. that feature alone. hopefully nsh will add it. though looks like development has stalled
edit: just realized nushell has the feature too. bye fish 👋
Its in the name... interactive.
You should never run scripts with fish.
Imo syntax of fish is much cleaner than its posix complaint counterpart . Also autocomplete feature is baked in fish .