this post was submitted on 11 Aug 2023
1 points (100.0% liked)

Linux

47361 readers
1194 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

So I've been using Linux now for a while, and am looking to migrate my dev environment to vim and spend more time in the command line. I'm fairly comfortable with bash but by no means an expert. I've used zsh with some minor customization but just recently learned about fish. I'd love to hear people's opinions.

top 13 comments
sorted by: hot top controversial new old
[–] [email protected] 1 points 1 year ago

An old sysadm introduced me to zsh 28 years ago now and I've used it as my primary shell ever since. It's tried, tested and most certainly works well.

[–] [email protected] 1 points 1 year ago* (last edited 1 year ago)

I like zsh with oh-my-zsh and Powerlevel10k. This gives me a clear indication of which system I am on and remains POSIX-compliant.

The biggest deal breaker for me for shells like fish are the they are not POSIX-compliant and I need to use remote systems regularly. Doesn't make sense to use something with a different syntax to me.

[–] [email protected] 0 points 1 year ago (1 children)

I use fish because I have better things to do than tweak my shell configuration and debug shell plugins.

When I tried oh-my-zsh and prezto (I think?) they came with tons of plugins that performed badly and made it hard to get things done (specifically, they ran git status synchronously on every new prompt, which does not work well in a moderately large repo). Fish had similar features but wasn't horribly slow, so I use it.

[–] [email protected] 1 points 1 year ago

Same. I've written a fish plugin, but other than that I just fish pretty much stock. It works and just gets out of my way.

[–] [email protected] 0 points 1 year ago (1 children)

I use Linux for work and I'm pretty much fully in bash. What's the benefit of changing to a different shell? Will all my scripts still work?

[–] [email protected] 0 points 1 year ago (2 children)

Zsh is just bash with plugins and stuff, so regular bash scripts work. fish, as I understand, uses its own language.

[–] [email protected] 1 points 1 year ago

Bash code is not safe to run as if it were Zsh, and Zsh has language features Bash doesn't. They are different languages.

[–] [email protected] 1 points 1 year ago

That's right. zsh is POSIX compliant while fish is not. That's the reason I switched to zsh from fish.

[–] [email protected] -1 points 1 year ago (1 children)

I use a mix of fish and nu depending on what I'm doing. NuShell is great but still pretty buggy, so I use fish as my default and switch to it when I want to use its features.

I still write most of my stuff in bash however since servers I work with typically only have bash, and so are potential coworkers.

But locally I see no point restricting myself to a POSIX compatible shell, especially for interactive shells. The easier and faster it is to use and customize the better. Being able to parse and use JSON and CSV and other things easily and natively right in the shell is a major quality of life improvement!

[–] [email protected] 0 points 1 year ago (1 children)

Why not use Perl or python for scripting tasks? Bash script is terrible imo.

[–] [email protected] 1 points 1 year ago (1 children)

I mean, I guess technically Perl could do but it wont earn you any favors from your coworkers.

I do use Python for higher level stuff but I don't see a point to go Python when you're just gonna call 20 subprocess anyway to do like apt update apt dist-upgrade apt install wget this untar this rsync this. Especially when you can't even assume you're going to have Python to provision the box.

[–] [email protected] -1 points 1 year ago

That's why I included Perl, it is always there. Just don't code as if you were in the nineties and Perl is a perfectly legitimate language, even more so for shell tasks. Bad and good doesn't depend so much on the language but the coder.

[–] [email protected] -1 points 1 year ago

Fish, it just works. Customization is super simple and has a really nice webui if you're into that sort of stuff. Plugins are easy to install with fisher. Out of the box it's very ergonomic and you don't have to deal with tons of scripts that may need debugging. Custom shell functions take 2 seconds to set up. Scripts use a shebang to specify the shell they run in, so you shouldn't have any issues with that. Whenever I absolutely need to run a command with bash, I just switch to it, do what I need to do, and hop back to fish. Highly recommend, haven't looked back since I started using it a few years ago :)