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 binaries or from crates.io. 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 #13001. 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. @WindSoilder fixed this in #13002, 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 @IanManske in #13006.
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.
Disallow more characters in arguments for internal cmd.exe
commands [toc]
Properly escaping command arguments on Windows is complicated, 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 @IanManske has fixed it in #13009.