Nushell 0.94.1

Nushell, or Nu for short, is a new shell that takes a modern, structured approach to your command line. It works seamlessly with the data from your filesystem, operating system, and a growing number of file formats to make it easy to build powerful command line pipelines.

Today, we're releasing version 0.94.1 of Nu. This is a patch release to fix issues introduced by 0.94.0, including path expansion for external commands, path type changes, shell integration, and more.

Where to get it

Nu 0.94.1 is available as pre-built binariesopen in new window or from crates.ioopen in new window. If you have Rust installed you can install it using cargo install nu.

As part of this release, we also publish a set of optional plugins you can install and use with Nu. To install, use cargo install nu_plugin_<plugin name>.

Table of content

Highlights and themes of this release [toc]

Restore tilde expansion on external command names [toc]

Tilde expansion in the name of an external command was inadvertently removed from 0.94.0, so these no longer worked:

~/bin/foo
^~/bin/bar
run-external ~/bin/baz

This behavior has been restored by #13001open in new window. We chose not to allow the following, for now (these still don't expand):

^"~/bin/foo"
^$"~/bin/($env.BIN_NAME)"
# and run-external with the same

This is to be consistent with our behavior in other places where quoted strings usually don't cause expansion of extra path features. It is possible to use path expand instead:

^("~/bin/foo" | path expand)

but we would like to make this more ergonomic somehow in a future release.

Fix handling of rest args in do [toc]

A bug has existed for a little while when using do with a closure that takes rest args and also takes required or optional args.

do { |a, b, ...c| print $a $b $c } 1 2 3 4 5 6 7 8

Before the patch, this would print 1, 2, and then [5 6 7 8], as the non-rest args were counted incorrectly. @WindSoilderopen in new window fixed this in #13002open in new window, and that fix is included in this release. Thanks!

Restore path type behavior [toc]

In 0.94.0, we changed path type to return an error for non-existent paths rather than an empty string, but we didn't communicate this change thoroughly enough and it broke some tools like zoxide. We've decided to go back to the previous behavior for now and revisit this later.

Fixed by @IanManskeopen in new window in #13006open in new window.

Fix incorrect path handling in OSC9;9 shell integration [toc]

This escape sequence is used to tell terminals where the current directory is. This is helpful for terminals that open new tabs in the same directory, e.g. "Duplicate Tab" in Windows Terminal. A slash was being added incorrectly to the beginning here, which broke Windows.

Fixed by @fdncredopen in new window in #12994open in new window.

Disallow more characters in arguments for internal cmd.exe commands [toc]

Properly escaping command arguments on Windows is complicatedopen in new window, and we weren't correctly rejecting certain potentially unsafe arguments to the cmd.exe builtins we support (such as mklink). As we would prefer that you only have to learn one set of escaping rules to use Nushell properly, this is undesirable behavior, so @IanManskeopen in new window has fixed it in #13009open in new window.

Full changelog [toc]