Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create pwsh as a shorter name for calling powershell.exe #4214

Closed
dragonwolf83 opened this issue Jul 11, 2017 · 134 comments
Closed

Create pwsh as a shorter name for calling powershell.exe #4214

dragonwolf83 opened this issue Jul 11, 2017 · 134 comments
Assignees
Labels
Area-SideBySide related to ability to run PS7 side-by-side with WinPS or different versions of PS7 Committee-Reviewed PS-Committee has reviewed this and made a decision Issue-Discussion the issue may not have a clear classification yet. The issue may generate an RFC or may be reclassif Resolution-Fixed The issue is fixed.
Milestone

Comments

@dragonwolf83
Copy link

The muscle memory from switching cmd to powershell is a pain. It is made worse by the fact that it is much longer than typing out cmd or bash. Even with Windows Search in Start, it often picks up the ISE if you have been using it awhile, so typing out the full name is often needed.

A better name would be posh.exe or other valid extension. It is as long as bash and just one character longer than cmd. Posh has been the accepted abbreviation in the community for all things PowerShell so there is some familiarity there. I don't believe there are any conflicts with other apps that this would cause, but that would need some digging.

This could be achieved in two ways.

  1. Create a an official shortcut or symbolic link named posh that would reference powershell.exe
  2. Rename powershell.exe to posh.exe.

The former maintains backwards compatibility and allows the user to choose between posh or powershell.exe. Existing scripts not impacted.

The latter could help give more freedom to issues like #4199 and other POSIX proposals to how the shell is started. However, it is a breaking change and would need to be reviewed for the impact and the branding implication.

I think making an official posh shortcut is the best option with minimal impact. New documentation could give preference to posh as the way to enter PowerShell.

@iSazonov iSazonov added the Issue-Discussion the issue may not have a clear classification yet. The issue may generate an RFC or may be reclassif label Jul 11, 2017
@SteveL-MSFT SteveL-MSFT added Area-SideBySide related to ability to run PS7 side-by-side with WinPS or different versions of PS7 Review - Committee The PR/Issue needs a review from the PowerShell Committee labels Jul 13, 2017
@joeyaiello
Copy link
Contributor

I would like a short alias too, but this is why we didn't get go with posh when we first went out (we talked about it at length). Appears to be still an up-to-date package too.

Open to other suggestions, but most of the obvious *sh ones have been taken. After the only wget/curl alias thing, I'd really like to avoid colliding with other packages out there, even if they're less common.

@rkeithhill
Copy link
Collaborator

I'm not too crazy about this whole idea but how about pwsh?

@RichardSiddaway
Copy link

I've never been keen on posh as a shortening of powershell. pwsh seems better but a quick internet search raises some possible issues. if we're going to do this I'd suggest as short as possible so what about just ps?

@RichardSiddaway
Copy link

OK - forget that - I just realised ps is an alias for get-process. that would be too confusing

@joeyaiello
Copy link
Contributor

I'm getting strong deja vu right now. 😉

@rkeithhill
Copy link
Collaborator

rkeithhill commented Jul 19, 2017

I appreciate PowerShell's readability (when not using aliases) so running powershell works fine for me.

@dragonwolf83
Copy link
Author

ps is an existing command on Linux as well.

Some other ideas are: pscmd, psc, monad, psh, pshell

There is definitely diminishing returns with these names though on whether they really save anything or just add unnecessary confusion if they are even available.

@iSazonov
Copy link
Collaborator

CoreSh, pcs, psc

@SteveL-MSFT
Copy link
Member

Too bad mosh is taken. psh is taken. [pshell] returns many hits. Interestingly, a search for msh on both Bing and Google bring up many hits for PowerShell (calling it Microsoft Shell), although there exists a msh on Unix (perhaps not used much)

@iSazonov
Copy link
Collaborator

😄 S#, P#

@SteveL-MSFT SteveL-MSFT added Committee-Reviewed PS-Committee has reviewed this and made a decision and removed Review - Committee The PR/Issue needs a review from the PowerShell Committee labels Jul 26, 2017
@SteveL-MSFT
Copy link
Member

@PowerShell/powershell-committee discussed this and is open to having a shorter symlink name, but we can't squat on anyone that already exists. prsh seems ok.

@mklement0
Copy link
Contributor

mklement0 commented Jul 28, 2017

Wait, wait! I got it: ^sh - or was that **sh? (jk).

prsh seems reasonabe - easier to type than pwsh, for instance, though pwrsh - despite being 1 char. longer - is also worth considering, given that "pwr" is a known abbreviation for "power".

Another, possibly complementary option: provide an automatic variable whose value invariably reflects the very same path of the binary that launched the current session.

bash has $BASH for that.

The advantage of this approach is that it is impervious to variations in / manipulations of $env:PATH.

We already have $PSHOME - arguably, something like $PS is not too much of a stretch.

That said, this relates to the discussion about not polluting the global namespace with automatic variables - see #4216.

@iSazonov
Copy link
Collaborator

.Net Core, CoreFX, CoreCLR, PowerShell Core - we could consider "core" as base.

@SteveL-MSFT
Copy link
Member

pscore seems fine to me even if it doesn't end with sh although other Committee members vetoed it

@iSazonov
Copy link
Collaborator

pscore or coreps - LGTM.

We can remember monad and msh (mentioned above).

@rkeithhill
Copy link
Collaborator

rkeithhill commented Jul 30, 2017

I like pwrsh the best so far. pscore is not bad either although it's getting kind of longish at 6 chars. Four or less chars is probably ideal but I could live with the 5 chars required by pwrsh.

@mklement0
Copy link
Contributor

My concern about incorporating the word "core" is that it carries no useful information on Unix platforms, where there's no other edition that it needs to be distinguished from.

@dragonwolf83
Copy link
Author

@rkeithhill how about pscx, ha! PowerShell Core Experience. Though, that did make me think of another, pscsh, PowerShell Core Shell.

I'm torn on some of the same names myself. I like the readability of pwrsh and pscore but I agree that 5 characters is the limit. 5 characters covers the first word power and any more than that you might as well type the full thing. monad is a great easter egg and readable, but confusing to those that don't know PowerShell's background. The 4 character prsh works well too.

It would be good to come up with a final list of names that can be used and do an official poll like the Edge team did. If there are any upcoming PS Community or official events, links to the poll can be given out to try and reach a larger audience.

@mklement0
Copy link
Contributor

@dragonwolf83:

pscsh is dangerously close to csh - an association we should avoid.

Again, I see no benefit in including the word "core", especially if there's a chance that the editions might be unified one day (and on Windows, folks seem to have lived comfortably without a short name for Windows PowerShell for a good decade).

Agreed re obscurity of monad.

My personal vote is for pwsh, prsh, or pwrsh.

@mklement0
Copy link
Contributor

mklement0 commented Jul 30, 2017

P.S.: In case Windows PowerShell also needs a short name, simply prefixing with w could be the solution, although among my favorites that really only (reasonably) rolls off the keyboard as wprsh, so in the two-edition short-name scenario my vote is for the prsh / wprsh pair.

@SteveL-MSFT SteveL-MSFT added this to the 6.0.0-HighPriority milestone Jul 30, 2017
@iSazonov
Copy link
Collaborator

My concern about incorporating the word "core" is that it carries no useful information on Unix platforms, where there's no other edition that it needs to be distinguished from.

:-) Should we rename .Net Core?

@mklement0
Copy link
Contributor

@iSazonov: Should we rename Windows PowerShell "Windows PowerShell .NET Framework [FullCLR]?"

@sandersaares
Copy link

One of the goals of Core is cross-platform portability

One part of cross-platform portability is that the same commands should work on both platforms if they do the same thing. Before this change, I could run powershell no matter what OS I was using and get the right thing. Now I can no longer do that.

Making software that is easy to use means caring properly for a million little things. Using strange and unintuitive names works counter to that.

@markekraus
Copy link
Contributor

I could run powershell no matter what OS I was using and get the right thing. Now I can no longer do that.

Not accurate. You could run powershell on windows and get Windows PowerShell then run powersehll on linux and get PowerShell Core. Now you can run pwsh on windows or linux and get PowerShell Core. So NOW we are in the state you desire. where as before we were in an inconsistent state.

Using strange and unintuitive names works counter to that.

well its clear it's not universally liked, but... what alternative do you suggest? I see everyone griping about the name but no alternatives to the underlying problem this name change addresses. As I said "You can't always get what you want"

No matter what name was chosen, people would be unhappy.

@WernerMairl
Copy link

@markekraus

  • we know that is is a beta - breaking changes are ok!
  • i'm a big fan of making better PS on *nix because it helps me to transfer my (PS) knowledge from Windows to *nix

My feedback was about usability and the concern of a shitstorm that enforces some re-names again and endless discussions.

You could run powershell on windows and get Windows PowerShell then run powersehll on linux and get PowerShell Core. Now you can run pwsh on windows or linux and get PowerShell Core. So NOW we are in the state you desire. where as before we were in an inconsistent state.

Separating Windows and Core is really a BETTER reason for the rename then "Create a shorter name" !

I suggest to do more clear communications about that (Issue Title, Release Notes etc)
I have read the first 2-3 pages of this issue and the discussion was only about length....

other feedback:
In the last weeks i have done a lot of codings with PS-Core on Docker and *nix
I like it but needs some polishing.
Idea/Suggestion:
if the name is changed from Powershell to pwsh, why not changing the Version from 6.0 to 1.0 (same discussion like the transform from ".Net 5.0" to "dotnet core 1.0
Basically CORE is more like a version 1.0 the a version 6, specially on *nix!!

regards
Werner

@markekraus
Copy link
Contributor

@WernerMairl There is an open discussion about using 1.0 instead of 6.0.0 #5165. Please go to that thread and read and comment.

Also, since you have been using it and have run into things you think need polishing, please check open issues to see if they address what you have run into. If there is an open issue, vote on it or comment and if not please open a new issue so they can be fixed. Several of us community members are actively engaged in fixing the lower priority issues and the Microsoft Team has been doing an amazing job working the higher priority and more difficult issues. Also, it's never too late to become a contributor yourself!

On the issue description and change communication, I agree that there was room for improvement on the communication of this change and why it was necessary. The roles of different people in this repo can be a bit confusing, but I am not a part of the PowerShell team, just a community contributor with (essentially) forum moderation privileges. I can't speak for the PowerShell Team, but I suspect they understand this fact themselves.

In their defense, this one is kind of hard to communicate. The majority of complaints seem to stem from the lack of understanding of the similarities and differences between Windows PowerShell and PowerShell Core. In order to effectively communicate this change, they would have needed to also rehash what was spelled out in the July 14th blog article. Which even then, people are still having difficulty navigating the similarity and differences. I think that it would need a lengthy description as to why the name change was done that many would still not read. I suspect the torches and pitchforks would have come no matter what.

@sandersaares
Copy link

Not accurate. You could run powershell on windows and get Windows PowerShell then run powersehll on linux and get PowerShell Core. Now you can run pwsh on windows or linux and get PowerShell Core. So NOW we are in the state you desire. where as before we were in an inconsistent state.

I understand what you mean but I counter that this is not what I want. There is a hidden assumption implicit in my statement: I expect PowerShell and PowerShell Core to be completely equivalent as long as I use common features. So far, this has gone without issues in all my use cases.

@markekraus
Copy link
Contributor

@sandersaares I believe your experience to be one of luck. It certainly doesn't match my experience. Also, I believe that assumption to be dangerous. This is a major version with a ton of documented breaking changes with a completely different underlying platform. This wont be like previous major versions of PowerShell with near 100% backwards compatibility.

@SteveL-MSFT
Copy link
Member

I see some people still making the false assumption that the changing of the executable name was primarily to save on typing. I can see how people may have gotten this impression since this original issue that was used for the PR started with a title asking for a shorter name.

I agree that we can improve our communication as we shouldn't expect everyone to read all the comments that the Committee makes on decisions. Particularly on a controversial one like this where the summary of the decision is easily lost.

It also seems that there is a fundamental misunderstanding of what PowerShell Core 6 is, particularly in relation to Windows PowerShell. Windows PowerShell 5.1 is still and will be the in-box version of PowerShell on Windows. My team also continues to support it as needed. We fully expect customers to continue to rely on Windows PowerShell for as long as they need to which may very well be at least the next 10 years. I think it was only recently when the downloads of WMF5.1 finally surpassed the downloads of WMF4.0.

PowerShell Core 6 is the next evolution of PowerShell where it is not only cross platform but also Open Source. As @markekraus noted, it is a major version change which allowed us more flexibility on accepting breaking changes we would never consider for Windows PowerShell. Also noted that PowerShell Core 6 is explicitly designed to work side-by-side (not only with Windows PowerShell but other versions of PSCore6). There should be no ambiguity of what you get on Windows when you type powershell. I'll just note here that the 6.0 vs 1.0 discussion already happened a long time back before we went public and is unlikely going to be reopened.

@dragonwolf83
Copy link
Author

@SteveL-MSFT a blog post on the name change would be good. It could cover the main driver for why the name change with a clear example of the problem on Windows. It would also be good to cover why posh and psh didn't make the cut as well.

@afkinsey
Copy link

afkinsey commented Oct 27, 2017

Maybe set up "powershell" as an alias for pwsh during unpacking+install. This just broke a build I was working on for a couple of days until I tracked down this issue.

Edit: on linux

@SteveL-MSFT
Copy link
Member

@markekraus has a nice blog post that captures the what and whys:

https://get-powershellblog.blogspot.sg/2017/10/why-pwsh-was-chosen-for-powershell-core.html

@bergmeister
Copy link
Contributor

Today I saw the first usage of pwsh on SO here although I doubt that the person knows about this thread...

theaquamarine added a commit to theaquamarine/PowerShell that referenced this issue Dec 18, 2017
powershell.exe is only provided by Windows PowerShell, PSCore
(ie non-Windows) uses pwsh.

PowerShell/PowerShell#4214 (comment)
@apjanke
Copy link

apjanke commented Oct 3, 2019

Can we get an official ruling on the pronunciation of pwsh? The PNG spec includes a pronunciation in its Section 1. May as well provide one for PowerShell; don't want another SCSI "scuzzy"/"sexy" situation.

Looks like "poosh" to me.

@SteveL-MSFT
Copy link
Member

@apjanke the generally accepted pronunciation of pwsh is posh

@apjanke
Copy link

apjanke commented Oct 3, 2019

Works for me. Thanks for the official confirmation!

@mklement0
Copy link
Contributor

As for alternative pronunciations:[1]

  • Pish Posh!

  • Poppyposh!

  • The Shell Formerly Known as PowerShell (TSFKAP in Georgian)

  • The Shell That Dare Not Speak Its Name (Because the Name of Its Executable is Unpronounceable) (preferred by Welsh speakers).


[1] Parody. Not to be taken seriously.

@Cloudmersive
Copy link

Why was this never fixed? It is still "pwsh" in Mac/Linux and "powershell" in Windows - so broken

@saschanaz
Copy link

saschanaz commented Jun 12, 2021

Why was this never fixed? It is still "pwsh" in Mac/Linux and "powershell" in Windows - so broken

Maybe because you haven't installed PowerShell Core?

@rkeithhill
Copy link
Collaborator

@Cloudmersive @saschanaz is right. Here's why. There are two different implementations of PowerShell. The original "Windows PowerShell" that has shipped with Windows since Windows 7. This is powershell.exe and does not run on anything but Windows. It is built on the desktop version of the .NET Framework (Windows only).

Then there is the cross-platform version of PowerShell built on .NET Core that started life as "PowerShell Core" but has recently been shortened to just "PowerShell". It does not come with Windows atm. But it runs on Linux, macOS and Windows. You have to install it separately. This is pwsh.exe. On Windows, you will have both powershell.exe and pwsh.exe (if you install it) and they do behave a bit differently due to differences between .NET Framework and .NET Core. There are folks still using powershell.exe where the move to pwsh.exe would break their scripts. So we need both names.

@Jaykul
Copy link
Contributor

Jaykul commented Jun 13, 2021

Can someone teach the bot to lock closed posts after a few months so we don't all get pinged when someone zombies them?

@doctordns
Copy link
Contributor

Why was this never fixed? It is still "pwsh" in Mac/Linux and "powershell" in Windows - so broken

Well - it was never broken. PWSH.EXE and POWERSHELL.EXE are two quite different products and are not totally compatible. There are things you can do on one but not the other.

TL;DR: nothing is broken.

And I agree with @Jaykul!

@rjmholt
Copy link
Collaborator

rjmholt commented Jun 16, 2021

Can someone teach the bot to lock closed posts after a few months so we don't all get pinged when someone zombies them?

I'll lock this issue. Locking all old issues is something that's been discussed before, but we have a few active old issues and personally it seems a bit heavy handed to me. Feel free to raise it in a separate discussion, like the community call or similar.

@PowerShell PowerShell locked and limited conversation to collaborators Jun 16, 2021
@iSazonov
Copy link
Collaborator

We have GitHub Discussions now.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Area-SideBySide related to ability to run PS7 side-by-side with WinPS or different versions of PS7 Committee-Reviewed PS-Committee has reviewed this and made a decision Issue-Discussion the issue may not have a clear classification yet. The issue may generate an RFC or may be reclassif Resolution-Fixed The issue is fixed.
Projects
None yet
Development

No branches or pull requests