@devopstoolbox I usually see old information online claiming to always use /usr/bin/env to find bash for portability with no mention of tradeoffs, but more modern information details security implications to doing this, you can't use any extra parameters, and env just calls the first version of bash so you could get versioning errors if a system has more than one version. One can search this topic and find multiple sources sharing these cautions as recent as this year.
"zsh is POSIX compatible: it means every inline bash commands we used earlier is still valid un Zsh" Bash and ZSH are *POSIX compliant*: they understand Posix syntax but it doesn't mean what you write with them is POSIX compliant (and so is portable on other posix compliant terminals). You can write bashisms (even inline) that are only understood by bash and same for zsh. Different programs exist to check if what you write is POSIX compliant, like shellcheck.
I've been using Fish for years simply because it is so fully-featured out of the box and easy to use. If it was POSIX-compliant, nobody would use anything else tbh. Nushell looks interesting too though, maybe you should have included it in your video ;-)
Yeah this was my experience. Fish was really cool but I didn't feel like doing any extra work getting other stuff working (didn't want to figure out bass)
I use ohmyzsh but really only feel like I take advantage of the completion and appreciate the coloration. I agree that it's bloated for my needs. I would love to see a video about going from ohmyzsh to simply zsh with control over which plugins a user might want. Cheers!
I started reading "from bash to zsh" a while back. While the things that zsh adds are all good ideas, I don't need them or miss them when in bash. Even on my mac, I use bash (recent bash via ports) rather than zsh. The thing is that when bash gets awkward, the solution is not another shell, but to write a script in Python.
With any other shell, i'd still keep bash as my login shell. And with that, using any other shell as my interactive shell would mean managing two environments. SSH Agents don't carry over or unlock on Login, Paths need to be managed in two places etc. For me, managing a second shell on top of bash was just to much stuff for what little benefit they gave me. With fzf i get all the completion and history in bash as well. I can also whip up a fancy prompt with git integration etc. And since many of my shells are in emacs, i get vim mode "for free".
Why would you keep bash as your login shell, though? Seems to me that you're just listing the reasons why you shouldn't do that instead of reasons not to switch shell.
I am confused. Both PATH and the SSH agent configuration are environment variables. If you configure those in your login bash and then start zsh then it should just inherit these values. No need for managing the same data in two places. I use bash only so maybe my lack of understanding is caused by my lack of famliarity with the other shells.
Another non-POSIX shell is nushell which handles many data formats from csv to JSON to SQLite, etc. If you deal with a lot of JSON this will blow your mind. I use Fish as my default shell and I have at least ZSH and Bash installed for POSIX Compliance.
I need that so rarely that I always forget the key binding. Another video just introduced me to fc (which I kind of knew but never use). So you get the same result but probably easier to remember with: :fc
Man your videos are so calming and interesting, also I learned about setting vim mode in bash, though I have always used bash, but hey, thanks for the motivation!
I won't use anything other than bash (even on my mac) because I don't want to get used to shortcuts that I can't use when ssh'ing into a random system.
And the things with bash is you can count on it being there on a Linux machine. e.g. my web host ssh doesn't have fish, only bash and zsh. Since all my config stuff and convenience scripts are for bash, I can just upload it and use them. I could do the same with zsh. But if I used fish at home, I couldn't replicate the cli environment.
And one day when you want to grow as a shell user you should have a look at readline. Bash can do about everything the video showed (without plugins); I guess the author just doesn't know it. Those features may be accessible more easily in other shells, though. But if you take the time to create a great bash config and use that on all your systems... One of my recent improvements is writing a small help text (the default key bindings for rarely used readline feature which I forget all the time) which is bound in readline to F1.
I've been using FISH for over half a decade now, and loving it. The killer feature is history traversal, just type a phrase and press UP to go through matching commands executed previously. Get oh-my-fish.
I did give Fish a short try a couple years ago, but this is the reason I switched back. Bash is ubiquitous; you will have to use it sooner or later, be that locally or in some deployment pipeline. After I installed it to play around, it was probably less than an hour before I had to switch back to bash to run some script...
I still don't see any reason to switch off of bash. All of the features and plugins for zsh have already been implemented in Bash. There is a plugin for everything! Fish doesn't seem like an upgrade over zsh. Nushell seems interesting though, I might have to give that a look.
Released two videos covering Nushell right after this video (the second one went out today). basically saying what you just wrote here but in a video :)
Your "Part 2: Differences from Bash" would be the most important part IMHO. I never bothered with fish because of non-posix-compliancy. I watched this video expecting to learn "how bad is it really?". So waiting for part 2. Also thought nushell would be a part of a video in 2024 covering shells. The big question I want to answer by watching all this: Is nushell worth breaking with posix, but fish is not? That is my current working assumption that I want to test. Thanks for the mention to local atuin - will set this up eventually.
For your terminal shell there is very little advantage to being posix compliant. You need posix compliance if you write scripts for other people to run, but that’s not your interactive shell. The only disadvantage comes when you have to “source” some script written by someone else or when installing some piece of software involves a complex addition to your configuration file. An example of the former is activating a python virtual environment.
@@teeesen I'm not just a single user. I want to answer the question: should the whole team and in extension the whole company move to nushell for ALL shell scripting? I don't care much about my personal scripts. Currently I use #!/bin/zsh to execute them, because even those scripts aren't compatible with bash. Doing a lot of executing background jobs lately, where the zsh syntax has some advantages, where bash is just plain confusing. I'm just faster in zsh. Still, it's pretty close to bash, unlike nushell. But my gut feeling is, that nushell might actually be worth it. But it would be a bold move to make it the default and leave bash behind.
@@freeo6242 Ok. Well that’s a whole other matter. A lot of the time posix sh is used for things like installation scripts and that’s where posix compatibility is important and fish and nushell aren’t helpful. As a programming language, fish is much better, in my opinion, than bash because it isn’t hobbled with Bourne shell compatibility and has some really useful features such as lists. I don’t know about nushell.
This is tmux :) I have the tmux bar show on top to separate from nvim and it works better IMO. Here's my tmux vid: th-cam.com/video/GH3kpsbbERo/w-d-xo.htmlsi=ZNrqeVGZITN0MR7I (upgraded since - more videos on the channel with the new setup) I also have a video going through the entire terminal setup if you want. and my dotfiles: dotfiles.omerxx.com
Bro, I really wanna have my setup on NixOS and am currently on arch. But it seems like a rabbithole. I know there are resources like docs and vimjoyer videos, but I'd love if u give a full setup tutorial. 🥺
I actually did make a video, one that covers the basics from scratch to a running flake and then another for mac users. check them out! it is a rabbit hole though... so watch out ;)
I’m in the same/similar boat: running Manjaro and being enticed by NixOS. Ended up creating a VM and setting things up there. Although I haven’t revisited it in some weeks, my goals is to get to a point where it feels as close as possible to my Manjaro setup in terms of desktop, programs, etc. Meaning, I don’t expect the package managers to be the same at all. Also using this to get ChezMoi set up to manage my dotfiles.
I'm too comfortable zsh already, so if fish every became THE thing I'll have to join the party late. But wow the config GUI looks amazing. Is that not possible with zshrc or bashrc?
You didn't go into any plugins or vi commands for fish. I'm also having fish_config crashing and not sure how to turn off things like showing me my branch of git when in projects. I don't like that feature. I'm playing around with it atm to see how it works overall. I do like not having to install 20 plugins to get things working but not sure how to tweak things without fish_config working.
definitely curious about Fish programming. I'm also curious about the difference between vi mode in Bash and Fish, particularly since vi mode in Bash is like a superpower
i'm a huge fish user on linux and use cmd+clink on windows (which essentially makes cmd very close to fish). i recently saw nushell, which was cool (but probably not going to get me to change)
everything's here: dotfiles.omerxx.com (although I don't think I made any special changes this time around). I wouldn't say I'm 100% but I'm definitely trying, just for the learning experience and then maybe it'll stick
You often refer to other videos by saying "more about that in the video above", however that feature seems to be gone on my yt - is that them experimenting with the ux again?
Big zsh user here. And I think it was your Starship video which got me to drop Powerlevel10k and simplify my OMZ setup. I’ve tried fish at least a couple times in the past. I couldn’t quite get past the counterintuitive design of file name/path completion: you start typing, it shows a ghost of what it think you want to type next, you hit tab and nothing happen. Oh… does right arrow work? Yes, yes it does. But now I have to use keys that break my flow. I’m guessing this is configurable? If I switch to fish, do I throw away Starship and fzf and perhaps other popular zsh configs/plugins? Or are there still things useful in zsh that would make sense with fish?
Still useful, but IMO, take it slowly. start fish "raw" (no pun intended 🐠 😅), and build it up from there. I can't say I'm 100% over with ZSH because of the tooling you mentioned that I'm used to and love so much. That said, imaging having to move around machines, and just installing fish gives you all these goodies out of the box, this can be a game changer for those with a similar usecase
I used fish for many years but came back to zsh. Reason, there are a few things that I can’t do in fish, such as expanding ** with tab as part of fzf. Also, here and there there are instructions for something that would work in either bash or zsh but not in fish, so would have to spend time tweaking those instructions to fish. But otherwise, fish is great.
1. Makes total sense 2. It feels like those who'd feel the "edges" of fish are power users like yourself, which are also likely to go deeper into fish.
The "echo 0" part is misleading. Makes looks like the printed 0 is the same as the exit code, but it's not. Echo always returns 0, no matter what you print.
Is ZShell the standard on Mac or something? Why would most people be using zsh and not bash, by default? (I've heard good thing about zsh and OhMyZsh, I just had no idea the majority of people used it)
So yea, it's default on macs now (someone in the comments mentioned it didn't actually replace bash on mac, but tcsh). It's just better, comes with more features, easier to config and nicer to use. If I'm honest, they can both enjoy one framework or another (like oh my zsh for example) and becomes infinitely better
It’s funny to hear you refer to bash as being the basic option. Some of us remember when the Bourne shell was the default, and ksh was for power users 😅
Atuin doesn’t replace zoxide. As for fzf - it uses the same fuzzy search capabilities but adds a layer of persistency, storing history on a local db. That’s the killer feature for me.
my problem with Fish is that by default it sets any new variable as global. that means that any external script can possibly interfere with your local script, without you even knowing it. I think this attitude is super dangerous. As far as I know, NuShell use local variables. But the project it's still too young for me to use as a daily driver.
Am I right that you not only presume your audience using Linux (or Mac, I cannot tell and you just won't) but require that as setup for your videos? If I'm mistaken, what do I miss here? I love your content and try to make sense of it as a Windows user.
Well, in a way, yeah. I'm using mac and lots of Linux in my line of work, but since windows and bash are friends now I guess you can get the same. That said, I definitely didn't try any of it on windows machines... (sorry)
@@devopstoolbox No need to be sorry 🤗 I just wish you'd bring some less demanding, noob-compatible content I could follow up on. I'm especially fond of your nvim notetaking approach but wasn't able to get anything substentially out of it (Yeah, I have a macbook as well). Thank you anyway for your inspiring top-notch content.
I started using fish a few years ago, I have known about it longer, but I kept seeing people using zsh and so I thought maybe Fish was missing something and I didn't have time to check it out fully. When I did have time I realised I wasn't missing out using Fish and that it was saving me time if I had to re-setup so I just figured I would default it. This was a great explanation you did tho was nice to watch
I keep seeing people say to use zsh too but I tried fish like 15 years ago and every time I get on a machine with zsh I just hate it. I'd rather just use bash than zsh.. if I have a choice though, fish
Fish is really cool but I let it for nushell since it's really great to work with data and write script since still being as powerful as zsh. It's the python I have always wanted
Thanks! the video was made with wezterm and I'm now testing Ghostty (video soon), that said, you won't feel the different, at least not visually. All my config is here: dotfiles.omerxx.com and you can find a video I made a couple months back going through the entire setup!
One of my favorite things about fish that you havent yet mentioned, is fish saving directory a command is run in this gives fish directory specific history. meaning for some directories where i run a couple commands, all i have to do is press up and everything is handled
commands like diw di( di" proove your statement is wrong. Why would I program the keyboard for such tasks, when zle vi mode (zsh) exists? Not sure if your keyboard is even more programmable then mine, but ofc I use home row navigation on a different layer. I wouldn't program advanced text editing functions though into the keyboard itself. Just think of "f" to go to a character in a long command. Vi mode is anything but redundant. And if your keyboard makes this redundant, please send me a link.
can't say that I agree. I'm not a home row fan as the latency bothers me a lot. found some other solutions, but vim motions are a muscle memory to me and having them inline is a game changer for me!
@@devopstoolbox 👍 whatever's fastest. I love that we can all use what works for us. I retrain when I find better layouts. Is the latency from holding home row keys to activate an arrow? I have my full nav layer triggered by a thumb key so there's no latency there
Excellent video! You inspired me to try out fish. I was using ZSH with ohmyzsh in the past, currently on a new system I use raw bash (didn't find time yet to set things up). You get my sub and thumbs up 🎉
For fish and zsh, they have their own prompts Tide and Powerlevel10k respectively. They both provide the same features as starship but with much more optimization. For example, they both have async git status, which starship can't implement.
@@aquepaique async git prompt and shell specific hacks. When your project has only 1 supported shell and not basically every shell in use, you have time to spend on optimization.
I feel like you haven't experimented enough with ZSH... You felt oh-my-zsh bloated but fish with all those features were not? ZSH has auto completion too
I've been running zsh for ~7 years, moved from oh my zsh to startship to manage my prompt, this killed 90% of the bloating. That said, fish defaults are mind blowing to me.... comes with so many built ins, and this turns my config to near-zero compared to earlier...
export XXX==YY do not set XXX variable for the current process. XXX=YY alone does that. export, as the name cleary says, exports those variables the child processes of this one. Also if you are minimally interested in following systems engineering career or similar. LEARN BASH, Only use that for a while. All scripting you will do in the future will be in bash. You can set whatever you want as an interactive shell after you are confident in bash. But bash is always first.
Hi! Thanks for the correction :) As for bash, i've been doing that for over a decade, and my two most popular plugins are written in bash :) I know the benefits and the drawbacks and I think there's room for imporvement!
I still don't get the hype about all these terminals and bash alternatives.. Not a fan of too fancy features that might break at inconvenient times, or which is incompatible at inconvenient times... I am staying with alacrity and bash for now.
I must be honest - there's a huge difference between zsh / fish and the smaller ones like nushell etc. These are battle tested for real. Maybe not around as long as bash but definitely not new.
Fish, modern? I don't think so. They say themselves they are 30 years out of date. Of course, with the unstated implication that its main competitors belong even further in the past.
It's all relative. I agree that there are WAY more modern options which I intend to get to, but theses are the leaders, and of the three, fish feels like the cool kids option
Thanks for making videos. I might be the only person here with this take but I really want to listen to the content; However, something about the typing is really off putting asmr.
8:30 *Always* use /usr/bin/env in your shebang statements! There are plenty of systems where /bin/bash does not exist.
heh I also got ticks when he wrote something else than /usr/bin/env
Super important. Thanks!
@@codeman99-dev yea. like nix.
i use env to find env to find bash to run the bash script to run the executable.....
@devopstoolbox I usually see old information online claiming to always use /usr/bin/env to find bash for portability with no mention of tradeoffs, but more modern information details security implications to doing this, you can't use any extra parameters, and env just calls the first version of bash so you could get versioning errors if a system has more than one version.
One can search this topic and find multiple sources sharing these cautions as recent as this year.
When the fish feature out of the box moves to a POSIX shell, it is game changing. all developers will use it.
Lots of developers hate fish. The best shell languages I have seen are ion shell, elvish, and oil shell
"zsh is POSIX compatible: it means every inline bash commands we used earlier is still valid un Zsh"
Bash and ZSH are *POSIX compliant*: they understand Posix syntax but it doesn't mean what you write with them is POSIX compliant (and so is portable on other posix compliant terminals). You can write bashisms (even inline) that are only understood by bash and same for zsh.
Different programs exist to check if what you write is POSIX compliant, like shellcheck.
Very true, thanks for the clarification!
1:28, I don't think the result code is 0 due to echoing 0 but rather the echo statement executed sucessfully
100% correct. my bad ;)
Excellent video with some awesome tips I didn't know!
Sup nerd 🤓
When u gonna be Nixed? 😂
❤️
All thanks to nerds ;)
I've been using Fish for years simply because it is so fully-featured out of the box and easy to use. If it was POSIX-compliant, nobody would use anything else tbh. Nushell looks interesting too though, maybe you should have included it in your video ;-)
There is a posix compliant version of fish
@@keaneplayingmbae2852what's it?
@@riufq there are many but most of them are not actively managed. nsh and fizsh are the main two I know but it's just better to use bass instead
@@keaneplayingmbae2852 okay thanks
@@riufq there BISH, FZSH and FIZH
Me and Bash are chill, we do be hangin.
i tried fish tho sometimes it does get annoying when you want to quickly export a variable or if you want to use a tool that doesn't support fish
Check bass, which is a fish plugin that let's you run bash commands
There is also a posix complaint version of fish if bass sucks for you
@@keaneplayingmbae2852can you just tell the name?
Yeah this was my experience. Fish was really cool but I didn't feel like doing any extra work getting other stuff working (didn't want to figure out bass)
What doesn’t work for you? `set` isn’t exactly arduous to type.
I use ohmyzsh but really only feel like I take advantage of the completion and appreciate the coloration. I agree that it's bloated for my needs. I would love to see a video about going from ohmyzsh to simply zsh with control over which plugins a user might want. Cheers!
You include the plugins you need in zshrc though?
check out the video I made with starship! I'm a big starship fan and I still use it!
my config is here - dotfiles.omerxx.com
"the valuable dev" has a really good series of blogs on how to set up zsh without any frameworks.
the valuable dev has a really good blog series on how to set up zsh without any frameworks
I literally only use zsh/ohmyzsh for a couple of the basic features and the git aliases that come out of the box... lol
Another modern alternative shell is `NuShell` which is a modern shell. try that out. (it's cross paltform too)
Nutshell is fantastic!
does it support braazilin nuts though?
@@plaintext7288
Sorry, that’s still in beta. Macadamia, Walnut, and pistachio though are supported.
As soon as they implement history substring search by pressing the up arrow I’ll start using it.
If you like nu check out elvish. It's still in early days but I really enjoy the workflow
I started reading "from bash to zsh" a while back. While the things that zsh adds are all good ideas, I don't need them or miss them when in bash. Even on my mac, I use bash (recent bash via ports) rather than zsh. The thing is that when bash gets awkward, the solution is not another shell, but to write a script in Python.
With any other shell, i'd still keep bash as my login shell. And with that, using any other shell as my interactive shell would mean managing two environments. SSH Agents don't carry over or unlock on Login, Paths need to be managed in two places etc. For me, managing a second shell on top of bash was just to much stuff for what little benefit they gave me. With fzf i get all the completion and history in bash as well. I can also whip up a fancy prompt with git integration etc. And since many of my shells are in emacs, i get vim mode "for free".
Why would you keep bash as your login shell, though? Seems to me that you're just listing the reasons why you shouldn't do that instead of reasons not to switch shell.
I am confused. Both PATH and the SSH agent configuration are environment variables. If you configure those in your login bash and then start zsh then it should just inherit these values. No need for managing the same data in two places. I use bash only so maybe my lack of understanding is caused by my lack of famliarity with the other shells.
Another non-POSIX shell is nushell which handles many data formats from csv to JSON to SQLite, etc. If you deal with a lot of JSON this will blow your mind. I use Fish as my default shell and I have at least ZSH and Bash installed for POSIX Compliance.
To edit a long command in bash emacs mode (like at 2:23) type C-x C-e. You still need backslashes to break a command across multiple lines.
I need that so rarely that I always forget the key binding. Another video just introduced me to fc (which I kind of knew but never use). So you get the same result but probably easier to remember with: :fc
Of course it is easy to assume zsh replaced bash on macos, but in fact it didn't. The previous default shell on Mac was tcsh :)
😮
Man your videos are so calming and interesting, also I learned about setting vim mode in bash, though I have always used bash, but hey, thanks for the motivation!
🙏
Have you tried Nu Shell?
Best shell ever !
on it!
thanks for the "v" to open cmd in editor. Didnt knew that! how can we set this to nvim for example?
Set your EDITOR variable to nvim. He shows his at 2:33
@@leif_p missed that part! but doens't seem to work for wsl (atleast for me, for whatever reason)
export EDITOR=
(or "set" in fish)
1. Use bash
2. Stay POSIX
3. Learn how the env variable PS1 works
4. Keep it simple
5. Enjoy
I won't use anything other than bash (even on my mac) because I don't want to get used to shortcuts that I can't use when ssh'ing into a random system.
And the things with bash is you can count on it being there on a Linux machine. e.g. my web host ssh doesn't have fish, only bash and zsh. Since all my config stuff and convenience scripts are for bash, I can just upload it and use them. I could do the same with zsh. But if I used fish at home, I couldn't replicate the cli environment.
And one day when you want to grow as a shell user you should have a look at readline. Bash can do about everything the video showed (without plugins); I guess the author just doesn't know it. Those features may be accessible more easily in other shells, though. But if you take the time to create a great bash config and use that on all your systems...
One of my recent improvements is writing a small help text (the default key bindings for rarely used readline feature which I forget all the time) which is bound in readline to F1.
@@HaukeLaging if you want , share it :)
Or use Startship on top of Bash.. That being said. I like zsh
I've been using fish for long time, no config, more features out of the box.
I've been using FISH for over half a decade now, and loving it. The killer feature is history traversal, just type a phrase and press UP to go through matching commands executed previously. Get oh-my-fish.
I did give Fish a short try a couple years ago, but this is the reason I switched back. Bash is ubiquitous; you will have to use it sooner or later, be that locally or in some deployment pipeline. After I installed it to play around, it was probably less than an hour before I had to switch back to bash to run some script...
That just so true, no matter how good all the shell out there. We still need bash in our job most of time.
I still don't see any reason to switch off of bash. All of the features and plugins for zsh have already been implemented in Bash. There is a plugin for everything! Fish doesn't seem like an upgrade over zsh. Nushell seems interesting though, I might have to give that a look.
Released two videos covering Nushell right after this video (the second one went out today). basically saying what you just wrote here but in a video :)
Your "Part 2: Differences from Bash" would be the most important part IMHO. I never bothered with fish because of non-posix-compliancy. I watched this video expecting to learn "how bad is it really?". So waiting for part 2. Also thought nushell would be a part of a video in 2024 covering shells. The big question I want to answer by watching all this: Is nushell worth breaking with posix, but fish is not? That is my current working assumption that I want to test.
Thanks for the mention to local atuin - will set this up eventually.
There's an atuin video i made recently if you want it as well :)
And yeah, I'll get to the other modern options soon enough! thanks
For your terminal shell there is very little advantage to being posix compliant. You need posix compliance if you write scripts for other people to run, but that’s not your interactive shell. The only disadvantage comes when you have to “source” some script written by someone else or when installing some piece of software involves a complex addition to your configuration file. An example of the former is activating a python virtual environment.
@@teeesen I'm not just a single user. I want to answer the question: should the whole team and in extension the whole company move to nushell for ALL shell scripting?
I don't care much about my personal scripts. Currently I use #!/bin/zsh to execute them, because even those scripts aren't compatible with bash. Doing a lot of executing background jobs lately, where the zsh syntax has some advantages, where bash is just plain confusing. I'm just faster in zsh. Still, it's pretty close to bash, unlike nushell. But my gut feeling is, that nushell might actually be worth it. But it would be a bold move to make it the default and leave bash behind.
@@freeo6242 Ok. Well that’s a whole other matter. A lot of the time posix sh is used for things like installation scripts and that’s where posix compatibility is important and fish and nushell aren’t helpful. As a programming language, fish is much better, in my opinion, than bash because it isn’t hobbled with Bourne shell compatibility and has some really useful features such as lists. I don’t know about nushell.
echo 0 isnt equivalent to true. The truthiness of a command is its return code, not what it prints to stdout
hmm yep. I guess I should have stressed that out. thanks
What's the symbol thingy above your prompt ? Is it starship ? It looks like that it stays in place. First time seeing this.
This is tmux :) I have the tmux bar show on top to separate from nvim and it works better IMO.
Here's my tmux vid: th-cam.com/video/GH3kpsbbERo/w-d-xo.htmlsi=ZNrqeVGZITN0MR7I (upgraded since - more videos on the channel with the new setup)
I also have a video going through the entire terminal setup if you want.
and my dotfiles: dotfiles.omerxx.com
Tried zsh, fish and always had to return to bash quickly, too much destruction with zsh etc.
Same. Tried others but I'm more productive in bash and vi.
@@dyu4634
Archlinux -> dwm -> vi -> bash
As an old school Linux user (3+ decades) I have come to love Fish. I still use Bash for certain things, but for general use Fish has become my go to.
Bro, I really wanna have my setup on NixOS and am currently on arch. But it seems like a rabbithole. I know there are resources like docs and vimjoyer videos, but I'd love if u give a full setup tutorial. 🥺
It's not that hard
@@md.taufikkhan6832 It's overwhelming...
There is a lot.
I actually did make a video, one that covers the basics from scratch to a running flake and then another for mac users. check them out!
it is a rabbit hole though... so watch out ;)
I’m in the same/similar boat: running Manjaro and being enticed by NixOS. Ended up creating a VM and setting things up there. Although I haven’t revisited it in some weeks, my goals is to get to a point where it feels as close as possible to my Manjaro setup in terms of desktop, programs, etc. Meaning, I don’t expect the package managers to be the same at all. Also using this to get ChezMoi set up to manage my dotfiles.
Use windows 🤓
Hopefully that api key isn’t valid anymore…
I made sure of it but thanks 😅
I'm too comfortable zsh already, so if fish every became THE thing I'll have to join the party late. But wow the config GUI looks amazing. Is that not possible with zshrc or bashrc?
What a feature huh?!
And no, not that I know of...
Can you tell us what browser you’re using? It looks like safari but I’m not sure how you get the transparent background.
It's Arc, the transparency is just a video edit trick... (sorry 😉)
is API keys leakage from zsh history intentional? :) 3:50
Sometimes I don't bother with blurring and just rotate them before publishing. although you're welcome to try 😅
You didn't go into any plugins or vi commands for fish. I'm also having fish_config crashing and not sure how to turn off things like showing me my branch of git when in projects. I don't like that feature. I'm playing around with it atm to see how it works overall. I do like not having to install 20 plugins to get things working but not sure how to tweak things without fish_config working.
I didn't have issues, and I get your point (add starship on top?) but it takes a bit of config to start with but then you're off.
I use bash with blesh and starship, and I have mostly all the features you talked about.
Yep, legit! My only claim here is that fish does most of it out of the box. That's why I was shocked
definitely curious about Fish programming. I'm also curious about the difference between vi mode in Bash and Fish, particularly since vi mode in Bash is like a superpower
Also have a look into "zle" vi mode from zsh. It has more vi features compared to bash.
i'm a huge fish user on linux and use cmd+clink on windows (which essentially makes cmd very close to fish). i recently saw nushell, which was cool (but probably not going to get me to change)
I've started elvish recently. It seems pretty good :) in emacs i tend to use the eshell.
Elvish over Nushell? Or didn't try it yet?
@@devopstoolbox i haven't tried nushell. elvish also has structs which you can pass between functions.
4:08 how do i get my browser to look like that
how do you make browser transparent, I would love you to make a video if't too comlicated.
The unfortunate answer is that it's a video editing trick. And, even if it was real, don't you think it'd be distracting as hell? 😅
Great video! I’ve been using fish shell for about a year now and never knew about the fish_config command.
fish is nice...do you have a nix config to look at? Are you exclusively fish now?
everything's here: dotfiles.omerxx.com (although I don't think I made any special changes this time around).
I wouldn't say I'm 100% but I'm definitely trying, just for the learning experience and then maybe it'll stick
You often refer to other videos by saying "more about that in the video above", however that feature seems to be gone on my yt - is that them experimenting with the ux again?
No! that's on me :( I added them and probably discarded before saving... both added again now thanks to you 🙏
Big zsh user here. And I think it was your Starship video which got me to drop Powerlevel10k and simplify my OMZ setup.
I’ve tried fish at least a couple times in the past. I couldn’t quite get past the counterintuitive design of file name/path completion: you start typing, it shows a ghost of what it think you want to type next, you hit tab and nothing happen. Oh… does right arrow work? Yes, yes it does. But now I have to use keys that break my flow. I’m guessing this is configurable?
If I switch to fish, do I throw away Starship and fzf and perhaps other popular zsh configs/plugins? Or are there still things useful in zsh that would make sense with fish?
Still useful, but IMO, take it slowly. start fish "raw" (no pun intended 🐠 😅), and build it up from there. I can't say I'm 100% over with ZSH because of the tooling you mentioned that I'm used to and love so much.
That said, imaging having to move around machines, and just installing fish gives you all these goodies out of the box, this can be a game changer for those with a similar usecase
Hey, what keyboard are you using in this video? Looking for my first split. Any recommendations?
Wait for next weeks video 👀😅
Short answer though: Moonlander
There is also csh, so using "zed shell" might be less confusing.
I used fish for many years but came back to zsh. Reason, there are a few things that I can’t do in fish, such as expanding ** with tab as part of fzf. Also, here and there there are instructions for something that would work in either bash or zsh but not in fish, so would have to spend time tweaking those instructions to fish. But otherwise, fish is great.
1. Makes total sense
2. It feels like those who'd feel the "edges" of fish are power users like yourself, which are also likely to go deeper into fish.
The "echo 0" part is misleading. Makes looks like the printed 0 is the same as the exit code, but it's not. Echo always returns 0, no matter what you print.
You're 100% right 🙏
what is this Terminal window you're using?
You might be thinking of his tmux setup?
@@jimcarroll9738 nah, it's neovim
The emulator over the past ~1year was Wezterm and I'm now using Ghostty, (video coming very soon)
@@devopstoolbox your setup is beautiful! Hope you will share how you made it look so nice.
@@devopstoolbox wait what, Ghostty is not open sourced (yet?), it's in private beta. I guess it will be not fully open source after all?
Amazing video! Thanks. What do you use to display this toolbar (shells, clock etc) at the top of your terminal?
Tmux :) I got an entire playlist on that and also checkout the video that outlines my configuration
fish is extremely user friendly, and all the bash scripts still work
Is ZShell the standard on Mac or something? Why would most people be using zsh and not bash, by default? (I've heard good thing about zsh and OhMyZsh, I just had no idea the majority of people used it)
So yea, it's default on macs now (someone in the comments mentioned it didn't actually replace bash on mac, but tcsh).
It's just better, comes with more features, easier to config and nicer to use.
If I'm honest, they can both enjoy one framework or another (like oh my zsh for example) and becomes infinitely better
You should take a look at nushell !
yep!
@@devopstoolboxu r so devoted to your audience that I see u in the repliez of all the comments in the video =} u r truly a very nice guy !=)
It’s funny to hear you refer to bash as being the basic option. Some of us remember when the Bourne shell was the default, and ksh was for power users 😅
lol. totally.. time moves fast :)
Is atuin better then fzf and zoxide?
Atuin doesn’t replace zoxide. As for fzf - it uses the same fuzzy search capabilities but adds a layer of persistency, storing history on a local db. That’s the killer feature for me.
Why fish does not comply with POSIX?
my problem with Fish is that by default it sets any new variable as global.
that means that any external script can possibly interfere with your local script, without you even knowing it.
I think this attitude is super dangerous.
As far as I know, NuShell use local variables. But the project it's still too young for me to use as a daily driver.
If you like fish you may be interested in checking Nushell as other have mentioned. 🙂
Yep, on it ;)
Am I right that you not only presume your audience using Linux (or Mac, I cannot tell and you just won't) but require that as setup for your videos? If I'm mistaken, what do I miss here? I love your content and try to make sense of it as a Windows user.
Well, in a way, yeah. I'm using mac and lots of Linux in my line of work, but since windows and bash are friends now I guess you can get the same.
That said, I definitely didn't try any of it on windows machines... (sorry)
@@devopstoolbox No need to be sorry 🤗 I just wish you'd bring some less demanding, noob-compatible content I could follow up on. I'm especially fond of your nvim notetaking approach but wasn't able to get anything substentially out of it (Yeah, I have a macbook as well). Thank you anyway for your inspiring top-notch content.
A more indepth video about the fish language would be great! :)
agree- especially on how it works with like nix-shells and the like
Noted!
I started using fish a few years ago, I have known about it longer, but I kept seeing people using zsh and so I thought maybe Fish was missing something and I didn't have time to check it out fully. When I did have time I realised I wasn't missing out using Fish and that it was saving me time if I had to re-setup so I just figured I would default it. This was a great explanation you did tho was nice to watch
Thanks! and I agree with every word
I keep seeing people say to use zsh too but I tried fish like 15 years ago and every time I get on a machine with zsh I just hate it. I'd rather just use bash than zsh.. if I have a choice though, fish
Fish is really cool but I let it for nushell since it's really great to work with data and write script since still being as powerful as zsh. It's the python I have always wanted
No mention of NuShell.
Big Sadge
it's cooking!
I love fish, but I still end up writing my scripts in bash so that others can use it
I mean, why not? you've got the interpreter always there. the shabang does it's job and you can choose your language freely
Statistically speaking most users use zsh? Where are you getting that idea?
We simply should not use the tools that ignore standards... no matter how cool they might look at first. Period
1. Agreed.
2. What specifically are we talking about?
Agreed. Use zsh.
@@devopstoolbox He is talking about Fish.. omg
Definitely interested in how fish differs from bash thanks….
what terminal he uses? such a beautiful design
Thanks! the video was made with wezterm and I'm now testing Ghostty (video soon), that said, you won't feel the different, at least not visually. All my config is here: dotfiles.omerxx.com and you can find a video I made a couple months back going through the entire setup!
Nice video, but still prefer zsh over fish, due to at work we only use bash and zsh.
One of my favorite things about fish that you havent yet mentioned, is fish saving directory a command is run in
this gives fish directory specific history. meaning for some directories where i run a couple commands, all i have to do is press up and everything is handled
Totally! I'm so used to Atuin by now (it comes with the feature) that I missed it
@@devopstoolbox you gave me a reason to keep using nushell
@@devopstoolbox you just gave me a reason to keep using nu shell
vi mode seems redundant when you have a programmable keyboard. Home row navigation keys changed the game.
commands like diw di( di" proove your statement is wrong. Why would I program the keyboard for such tasks, when zle vi mode (zsh) exists? Not sure if your keyboard is even more programmable then mine, but ofc I use home row navigation on a different layer. I wouldn't program advanced text editing functions though into the keyboard itself. Just think of "f" to go to a character in a long command. Vi mode is anything but redundant. And if your keyboard makes this redundant, please send me a link.
can't say that I agree. I'm not a home row fan as the latency bothers me a lot. found some other solutions, but vim motions are a muscle memory to me and having them inline is a game changer for me!
@@devopstoolbox 👍 whatever's fastest. I love that we can all use what works for us. I retrain when I find better layouts.
Is the latency from holding home row keys to activate an arrow? I have my full nav layer triggered by a thumb key so there's no latency there
@@devopstoolbox What do you mean by latency on the home row?
No nushell??
SOON!
Warp has been the best shell I’ve used
Still asks for a registration which is... meh
You have oh-my-fish to easily customize fish
Cool! seem to be unmaintained but nevertheless interesting
@@devopstoolbox the note about being unmaintained is fairly recent I think, I didn't know until you mentioned it.
nushell video please
on it!
nice video, i'd like on fish shell, even though i'm already using that masterclass piece of software
Excellent video! You inspired me to try out fish. I was using ZSH with ohmyzsh in the past, currently on a new system I use raw bash (didn't find time yet to set things up).
You get my sub and thumbs up 🎉
🙏
For fish and zsh, they have their own prompts Tide and Powerlevel10k respectively. They both provide the same features as starship but with much more optimization. For example, they both have async git status, which starship can't implement.
How tide and powerlevel are more optimized than starship?
@@aquepaique also powerlevel10k has been archived
@@aquepaique async git prompt and shell specific hacks. When your project has only 1 supported shell and not basically every shell in use, you have time to spend on optimization.
I must say, I've been a powerlevel10k user for a VERY long time. works great, but not as lean and fast as starship IMO...
I feel like you haven't experimented enough with ZSH... You felt oh-my-zsh bloated but fish with all those features were not? ZSH has auto completion too
I've been running zsh for ~7 years, moved from oh my zsh to startship to manage my prompt, this killed 90% of the bloating. That said, fish defaults are mind blowing to me.... comes with so many built ins, and this turns my config to near-zero compared to earlier...
As a fish user, zsh is better. I still use fish tho
You really should try Nushell
it's coming!
Bash is the way
sure thing grandpa
What about nushell?
on it :)
I switched to fish a few months ago. I'm not going back.
export XXX==YY do not set XXX variable for the current process. XXX=YY alone does that.
export, as the name cleary says, exports those variables the child processes of this one.
Also if you are minimally interested in following systems engineering career or similar. LEARN BASH, Only use that for a while. All scripting you will do in the future will be in bash.
You can set whatever you want as an interactive shell after you are confident in bash. But bash is always first.
Hi!
Thanks for the correction :)
As for bash, i've been doing that for over a decade, and my two most popular plugins are written in bash :)
I know the benefits and the drawbacks and I think there's room for imporvement!
nushell ?
Where does Warp fall in the ecosystem of this video?
Hmmm it doesn't really. Great UI but too fancy for me, plus the need for a signup before using a terminal is 😐
Fish is great... its the default of the freeBSD OS
It isn't. The default shell on FreeBSD is ash, a Bourne shell implementation, and formerely tcsh for the root user.
No doubt fish is good but I bet you will come back with a video soon stating back to zsh !!! By the way Very nicely presented as always
Thanks!
And you may be right 🤷
yes please "bash tips and tricks"
This is toxic to call non fish users closeminded. People choose to use POSIX complaint shells not because they don't know about fish or nushell.
Good vid. Those sound effects a bit annoying tho.
bro looks dead inside on the thumbnail lmao
Try all three in 48 hours and then look in the mirror 😅
I still don't get the hype about all these terminals and bash alternatives..
Not a fan of too fancy features that might break at inconvenient times, or which is incompatible at inconvenient times...
I am staying with alacrity and bash for now.
I must be honest - there's a huge difference between zsh / fish and the smaller ones like nushell etc. These are battle tested for real. Maybe not around as long as bash but definitely not new.
i came just for the differences in scripting.
please, i want that video.
Fish, modern? I don't think so. They say themselves they are 30 years out of date. Of course, with the unstated implication that its main competitors belong even further in the past.
It's all relative. I agree that there are WAY more modern options which I intend to get to, but theses are the leaders, and of the three, fish feels like the cool kids option
Thanks for making videos.
I might be the only person here with this take but I really want to listen to the content; However, something about the typing is really off putting asmr.
"Your $500 keyboard sound is off putting asmr" is the most 1st-world-problem I've heard today.
IMO zsh is best balance between bash and fish, so it's zsh for me!
Meh may have to give fish a try a boring bash type of guy tho
api key leak alert 🚨
haha, was waiting for someone to notice ;) it's been rotated, but give it a go 😅