4 ms·
This is pretty cool! I’ve been searching for a nice shell to unify my workflows on Mac, Windows, and Linux (WSL). Choices are few and far between, Elvish is the
by uranusjr 6y ago
This is pretty cool! I’ve been searching for a nice shell to unify my workflows on Mac, Windows, and Linux (WSL). Choices are few and far between, Elvish is the only thing that has worked out (which is fortunately more than decent for me), and I’ll probably give this one a spin.
- xiaq 6y agoElvish author here, glad that you like it, and thanks for the plug :) To save people a search, here's Elvish's homepage: https://elv.sh https://elv.sh
- hnlmorg 6y agoI have a huge amount of respect for Elvish. There's a lot of parallels in design, goals, etc between what I've built and Elvish. I think we even started our projects around the same time too. And I love the fact that you've already got a community using it. If truth be told, seeing the success of Elvish and the number of people who've found it useful has helped inspire me to keep at the boring stuff of my own shell (like writing documentation) just in case anyone else happens to find pleasure in using my humble project too. So I want to thank you for all your work on Elvish and for it's wider contribution to the community :)
- electricEmu 6y agoPowerShell also runs on Mac, Windows, and Linux. You pass objects instead of plaintext through the pipeline which provides a rich experience. The full .NET type and ecosystem are also available when you really need a full fledged class for a thing. There are good choices in 2021. https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-7.1 https://docs.microsoft.com/en-us/powershell/scripting/instal...
- hnlmorg 6y agomurex also passes objects. The difference is the objects are passed as UNIX byte streams but with an additional data-type meta field. So processes written in murex can have PowerShell-like objects but at the same time standard POSIX utilities can still be added to the pipeline with no additional effort. That latter point is, in my opinion, the biggest hurdle to using PowerShell. Of course, it ultimately boils down to personal preference and for some, .NET support is a killer feature.
- uranusjr 6y agoThe cross-platform pwsh is actually what inspired me to go on the hunt, and was the first thing I tried. But while it’s good on Windows, using it on POSIX just felt… wrong, somehow. I later discovered uutils/coreutils (a Rust reimplementation of GNU coreutils that works on Windows) and decided it’s easier to bring my POSIX workflow to Windows than the other way around.
- electricEmu 6y agoWSL on Windows replaces the need for uutils/coreutils. Running an actual distribution of Linux on Windows with WSL provides an actual Linux/POSIX environment. In my experience, there is a graveyard of tools that I tried which attempted to create native POSIX ports for Windows. Each port came up short in my workflow every time. PowerShell and WSL provide me and the teams I work with an experience that simply works.
- ridiculous_fish 6y agoCan you say more about that? So for example if I pipe to `grep`, murex will write some additional metadata info to the pipe? Won't that confuse grep?
- hnlmorg 6y agomurex breaks POSIX compliance massively because it acts as a proxy between each command in the pipeline. This means it can forward type information to processes within murex (eg builtins) but read and write byte streams to external commands. As mentioned to one of your other replies, this causes a few issues (eg forking). But processes are still run in parallel like with a traditional shell and 99% of time this massive cheat is transparent to both the running processes and the users too. This cheat does allow for some additional features though, like - colourisation of STDERR (so it stands out) - STDERR byte count used to judge if a process has failed (possibly a few others I've forgotten but have to dash now for a lockdown Zoom party....sorry)
- 6y ago