Because, as someone who dislikes MS as much as possible, Powershell is one of the few things they done right :) And when you manage mostly Windows servers and a few Linux servers, why not choose a solution that works on both platforms? And yes, perl, python, ruby, they all work on Windows too, but its just not comparable to powershell on Windows.
So i can understand why someone asks this question :)
Personally, i keep them both seperated, powershell on Windows, bash on Linux. But i can understand why someone might choose to go “powershell all the way” :)
Powershell is a better language but is absolutely dogshit for interactive use IME. It’s SO wordy and the excessive use of camelCase is annoying and I yearn for simple GNU coreutils every time I touch it. Like, give me tail -f please, why does cat also have a -Wait option or whatever the fuck
Understandable sentiments. I’m a MS Edge user, for instance, and despite slowly switching almost all my other services, MS Edge just gets it all right. Brave’s featureset is basically a lesser version, and Firefox is getting better, but Microsoft (of all companies) genuinely made a great browser.
But you aren’t using Windows.
You’re also now adding a .NET Core requirement for any Linux box wanting to use it.
That means limited functionality as its not the full blown .NET framework.
So, compared to something like bash, you now have added requirements with less functionality.
To answer your original question though, a lot of people prefer zsh as its got a crazy amount of customization you can do.
People also like fish due to it being very friendly and interactive.
For a long time I used a super customized zsh setup. It was, unfortunately, crazy slow and regularly broke on updates. It had precisely all the features and behavior I wanted though. Like you say, zsh is very customizable.
Then I switched to tiling window managers and with that to the alacritty terminal. This made me value start up times and performance, as I was constantly opening and closing terminals. So I spent a ridiculous amount of time optimizing my zsh config to be as fast as possible. This is also what I used for a long time before correcting my ways.
When that device, my work laptop, failed, I had to set up my desktop for work. This involved setting up zsh, which I quickly realized was a lot of work. So, on a whim, I installed fish.
Oh my god. Not only did fish have nearly all the features I wanted out of the box, but it was easy to add plugins (customizations) in a performant way. Fish even had default behavior I didn’t know I needed. And most importantly: it was crazy fast!
Since then I have never left fish. It is so much better than anything I had imagined. At this point I use way more default features as well, so I pretty much only add the tide prompt and zoxide. I also have a functions and abbreviations folder which is essentially my zsh alias collection.
The crazy part is really how much faster it is though. I really, really love it. And now they’re rewriting it in Rust as well!
limited functionality as it’s not the full blown .NET
This is misleading to the point of being completely wrong
On Linux, you do not have access to Windows UI frameworks like WinForms, the Windows registry, and to System.Drawimg (because it is just a thin wrapper over Win32). Essentially the entire .NET standard library is available on Linux.
I would argue that .NET is actually better on Linux for some things (like web dev).
That said, I can see no reason to use PowerShell on Linux unless you are a .NET dev.
There are PowerShell cmdlets that do not work on Linux. Again, mostly stuff that talks to explicitly Windows services and sub-systems. But that has nothing to do with .NET at all. Also, path separators and case sensitivity is different on Linux. So, cross-platform scripting is a pain.
I’ve once created a profile with about 1500 lines of code for powershell, managing AD at work. It was great to learn, it’s great for scripting and it’s very intuitive (for me at least), I also liked working with objects.
I wouldn’t use it on Linux though, I’m not sure how well integrated it is.
I’m using fish at the moment, desktop and server, and I like it primarily for the functions and the autocomplete
I didn’t know you could use it on Linux. I’d consider it because I’ve used it at work for years and my experience with bash is far more limited. Powershell is pretty damn intuitive. I’ve gotten a lot further with it than I have any other scripting language.
If you run VMware, you can use PowerCLI to interact with your vSphere servers, and PowerCLI requires PowerShell and uses similar syntax. I haven’t tried it on Linux yet, but I would assume that that might be a valid use case.
It’s been a while for me and i can’t try things out atm, but i think vSphere SSH access is only for managing the appliance itself, not objects like VMs in a vSphere cluster. For that, you would have to use the Python SDK or PowerCLI.
With PowerShell on Linux you’d never run dnf starting with Invoke-Expression. It’s completely unnecessary.
This feels like you either legitimately don’t know how it works so are assuming, or are making it more complicated on purpose to make bash look ‘better’.
I’m not saying PowerShell should be used on Linux over bash, but your example is not a good one.
The practical purpose of asking is to get a feel for how many people use it.
Less tongue in cheek though, it sounds like you have the same questions as OP. If you’re curious what might be the practical purpose, why not ask people who use it why they do instead of berating OP for asking if anyone uses it?
Well by that logic, it’s a way for Windows users to not learn the native tooling available, but not skip any steps. It doesn’t make any sense.
Learning Powershell in a Linux environment is going to just absolutely be a crutch and fuck up your ability to interact with other Linux systems that don’t share your particular environment.
As someone who used bash on Windows through MSYS, I don’t see the issue. It was different, not inferior, to cmd and PowerShell. If someone wants to use PowerShell on Linux why be such a condescending jerk about it? Sometimes people just wanna try things for the fun of trying new things.
Honest question: why?
Because, as someone who dislikes MS as much as possible, Powershell is one of the few things they done right :) And when you manage mostly Windows servers and a few Linux servers, why not choose a solution that works on both platforms? And yes, perl, python, ruby, they all work on Windows too, but its just not comparable to powershell on Windows.
So i can understand why someone asks this question :)
Personally, i keep them both seperated, powershell on Windows, bash on Linux. But i can understand why someone might choose to go “powershell all the way” :)
Powershell is a better language but is absolutely dogshit for interactive use IME. It’s SO wordy and the excessive use of camelCase is annoying and I yearn for simple GNU coreutils every time I touch it. Like, give me
tail -f
please, why doescat
also have a-Wait
option or whatever the fuckUnderstandable sentiments. I’m a MS Edge user, for instance, and despite slowly switching almost all my other services, MS Edge just gets it all right. Brave’s featureset is basically a lesser version, and Firefox is getting better, but Microsoft (of all companies) genuinely made a great browser.
Why not? It seems like a well supported shell on windows that isn’t terrible.
But you aren’t using Windows. You’re also now adding a .NET Core requirement for any Linux box wanting to use it. That means limited functionality as its not the full blown .NET framework. So, compared to something like bash, you now have added requirements with less functionality.
To answer your original question though, a lot of people prefer zsh as its got a crazy amount of customization you can do. People also like fish due to it being very friendly and interactive.
For a long time I used a super customized zsh setup. It was, unfortunately, crazy slow and regularly broke on updates. It had precisely all the features and behavior I wanted though. Like you say, zsh is very customizable.
Then I switched to tiling window managers and with that to the alacritty terminal. This made me value start up times and performance, as I was constantly opening and closing terminals. So I spent a ridiculous amount of time optimizing my zsh config to be as fast as possible. This is also what I used for a long time before correcting my ways.
When that device, my work laptop, failed, I had to set up my desktop for work. This involved setting up zsh, which I quickly realized was a lot of work. So, on a whim, I installed fish.
Oh my god. Not only did fish have nearly all the features I wanted out of the box, but it was easy to add plugins (customizations) in a performant way. Fish even had default behavior I didn’t know I needed. And most importantly: it was crazy fast!
Since then I have never left fish. It is so much better than anything I had imagined. At this point I use way more default features as well, so I pretty much only add the tide prompt and zoxide. I also have a functions and abbreviations folder which is essentially my zsh alias collection.
The crazy part is really how much faster it is though. I really, really love it. And now they’re rewriting it in Rust as well!
This is misleading to the point of being completely wrong
On Linux, you do not have access to Windows UI frameworks like WinForms, the Windows registry, and to System.Drawimg (because it is just a thin wrapper over Win32). Essentially the entire .NET standard library is available on Linux.
I would argue that .NET is actually better on Linux for some things (like web dev).
That said, I can see no reason to use PowerShell on Linux unless you are a .NET dev.
There are PowerShell cmdlets that do not work on Linux. Again, mostly stuff that talks to explicitly Windows services and sub-systems. But that has nothing to do with .NET at all. Also, path separators and case sensitivity is different on Linux. So, cross-platform scripting is a pain.
I’ve once created a profile with about 1500 lines of code for powershell, managing AD at work. It was great to learn, it’s great for scripting and it’s very intuitive (for me at least), I also liked working with objects.
I wouldn’t use it on Linux though, I’m not sure how well integrated it is.
I’m using fish at the moment, desktop and server, and I like it primarily for the functions and the autocomplete
bash is also well supported in Windows via WSL
Because I have to admin Windows boxes and M365. There are PS modules for lots of different MS things.
Development. Azure especially.
There’s an AZ CLI for every PS Azure module though.
There are reasons for the SDK and reasons for the CLI. Both have their place.
exchange online shell
I didn’t know you could use it on Linux. I’d consider it because I’ve used it at work for years and my experience with bash is far more limited. Powershell is pretty damn intuitive. I’ve gotten a lot further with it than I have any other scripting language.
If you run VMware, you can use PowerCLI to interact with your vSphere servers, and PowerCLI requires PowerShell and uses similar syntax. I haven’t tried it on Linux yet, but I would assume that that might be a valid use case.
vSphere has SSH access. This isn’t a reason to use PSH on Linux.
It’s been a while for me and i can’t try things out atm, but i think vSphere SSH access is only for managing the appliance itself, not objects like VMs in a vSphere cluster. For that, you would have to use the Python SDK or PowerCLI.
Why do you care why OP asks if people use something?
I mean what’s the practical purpose?
PS is much nicer to write scripts. It has QoL
Uhhhh…no? It has zero integration on Linux, which is why I asked.
zero intergration? Thats just wrong. I’d argue you can do anything with PS on linux that you can with bash.
Perfect example:
Bash:
sudo dnf install python
OR
PS: `Invoke-Expression ‘sudo dnf install package-name’
Stupid to even try and make the argument that PS is a viable solution to anything at all with its ignorant declarations of obvious usage.
With PowerShell on Linux you’d never run dnf starting with Invoke-Expression. It’s completely unnecessary.
This feels like you either legitimately don’t know how it works so are assuming, or are making it more complicated on purpose to make bash look ‘better’.
I’m not saying PowerShell should be used on Linux over bash, but your example is not a good one.
The practical purpose of asking is to get a feel for how many people use it.
Less tongue in cheek though, it sounds like you have the same questions as OP. If you’re curious what might be the practical purpose, why not ask people who use it why they do instead of berating OP for asking if anyone uses it?
Well by that logic, it’s a way for Windows users to not learn the native tooling available, but not skip any steps. It doesn’t make any sense.
Learning Powershell in a Linux environment is going to just absolutely be a crutch and fuck up your ability to interact with other Linux systems that don’t share your particular environment.
As someone who used bash on Windows through MSYS, I don’t see the issue. It was different, not inferior, to cmd and PowerShell. If someone wants to use PowerShell on Linux why be such a condescending jerk about it? Sometimes people just wanna try things for the fun of trying new things.