Skip to content(if available)orjump to list(if available)

Elvish – Powerful scripting language and versatile interactive shell

photonthug

While removing weird stuff from daily bash annoyances is interesting, I'm not necessarily looking to replace that with brand new but also pretty random weird stuff. Adding new rules isn't the same as adding structure. The documentation is also frequently strange in a way that makes it hard to digest. From https://elv.sh/learn/first-commands.html#external-commands

> While Elvish provides a lot of useful functionalities as builtin commands, it can’t do everything. This is where external commands come in, which are separate programs installed on your machine. Many useful programs come in the form of external commands, and there is no limit on what they can do. Here are just a few examples: Git provides the git command to manage code repositories

At first I thought, wait, is this a shell or not, do I have to write code or something to get access to normal external commands? But no, this is more like going to a car dealership and having the salesman say "Hey thanks for coming by, a car is a mechanical device consisting of metal parts and rubber parts for the purpose of taking you where you need to go! Now that we're on the same page about that, money is a thing made of paper for the purposes of .."

Docs are hard, once or twice is fine, but lots of parts are like this and I gave up reading. Not sure if it's AI generated, but if the project is doing that then it should stop, and if it's not doing that it should consider starting to

nneonneo

I mean, you are literally reading the first chapter of the tutorial for beginners (“Beginner's Guide to Elvish is for you if you haven’t used shells a lot or want to brush up on the basics”).

They have a separate set of docs for people who do have some experience with other shells (https://elv.sh/learn/); you may find the quick tour more suitable for your speed: https://elv.sh/learn/tour.html

IshKebab

Looks nice. Obviously way better than Bash, but there are a few options that are way better than Bash, so I feel like it should spend some time convincing me why I should use this over e.g. Nushell.

Anyone have any experience of both?

sidkshatriya

nushell vs Elvish

The Nushell and Elvish scripting languages are similar in many ways. I personally find the "shell" experience better in Nushell than Elvish.

Nushell

- Bigger community and more contributors

- Bigger feature set than Elvish

- Built in Rust (Yay :-)! )

Elvish

- Mostly developed by one person

- Built in golang

- Amazing documentation and general attention to detail

- Less features than Nushell

- Feels more stable, polished, complete than Nushell. Your script written today more likely to work unaltered in Elvish a year down the line. However this is an impression. Nushell must have settled down since I last looked at it.

For "one off" scripts I prefer Elvish.

I would recommend both projects. They are excellent. Elvish feels less ambitious which is precisely why I like it to write scripts. It does fewer things and I think does them better.

Nushell feels like what a future scripting language and shell might be. It feels more futuristic than Elvish. But as mentioned earlier both languages have a lot of similarities.

graemep

> Built in Rust

> Built in golang

Does that matter?

If you intend to be a contributor, of course the chosen language matters, but only a very small proportion of users will be contributors.

dijit

There are quirks specific to languages.

Rust tends to be marginally faster and compile to smaller binaries.

Go projects tend to hit maturity faster and develop quicker.

Its a relevant factor to quickly stereotype certain characteristics of development, but its not anywhere close to important.

Levitating

What about fish? I've enjoyed using it for years.

There's a few obvious features missing in fish like backgrounding an alias or an equivalent to set -e, other than that I have no complaints.

The first thing I do on any machine is install fish.

sidkshatriya

fish is amazing. I use it as my primary shell.

But for writing scripts I would reach for Elvish/Nushell. More powerful.

atiq-ca

Looks interesting! Does it have OOP features kinda like how powershell has that?

baobun

Anyone here using elvish on the regular? Anecdotes please!

sidkshatriya

I don't use Elvish daily (I use fish) but writing scripts in Elvish is a great experience. The elvish executable can serve as an LSP server and that makes writing Elvish scripts a bit easier.

I don't care much for the Elvish shell experience, rather I like the Elvish scripting language. The documentation is top notch and the language evolves slowly and feels stable.

einpoklum

> I don't care much for the Elvish shell experience, rather I like the Elvish scripting language.

It's a shell, aren't those two things supposed to be the same basically? Or - do you mean the interaction with the terminal/command-line?

sidkshatriya

The shell prompt is also a small interface. How your shell responds to tab autocomplete, provides suggestions etc. can be quite helpful. Here I just like the way fish suggests filenames, provides an underline for filenames that exist and so on.

The language is what you write in an $EDITOR. Here Elvish scripts can be nice, succinct and powerful. I like how I don't have to worry about strange "bashisms" like argument quoting etc. Everything feels consistent.

null

[deleted]