mrkeyoor.com_
Tue 01 Sept 16:12 UTC
Dev Toolsevaluationupdated 26 Aug 2026

nushell review

Nushell is a cross-platform command shell that passes typed tables, records, lists, and other values through pipelines instead of treating everything as plain text. It lets people query files, processes, command output, and formats such as TOML with one expression language on Windows, macOS, and Linux.

+48stars / 7d
Verdict

Our Nushell build succeeded, but it took 386 seconds and the suite ended with 60 failed tests after 359 seconds, despite 4,128 passes. Install the released binary if typed pipelines would replace piles of jq, awk, and platform-specific parsing in your daily work. Do not migrate critical scripts on enthusiasm alone: pin 0.115.1, port a representative workflow, and check every external-command boundary.

We ran it

Lab card: what happened when we ran nushellScreenshot of nushell (www.nushell.sh)
Install✓ · 58s738 packages
Build✓ · 386s
Tests✗ · 359s4128 passed · 60 failed of 4188 (cargo test)
Repo2462 files~423,625 lines of source · 17 MB · 12 CI workflows · tests dir

Answers from our run

Does nushell build from source?

Dependencies installed in 58 seconds (738 packages), and the build succeeded in 386 seconds. We cloned commit cf5390e into a clean Debian container with 3 CPUs and no project-specific setup.

Do nushell's tests pass?

Not all of them: 4128 of 4188 passed and 60 failed when we ran the project's own test command (cargo test). Some failures need services or credentials a bare container does not have.

Who should not use nushell?

Teams that need existing POSIX shell scripts to run unchanged: Nushell has its own syntax and data model, while external commands remain a compatibility bridge.

What are the alternatives to nushell?

PowerShell, fish, Elvish. Our Nushell build succeeded, but it took 386 seconds and the suite ended with 60 failed tests after 359 seconds, despite 4,128 passes.

Setup4/5Release binaries are easy; source build took 386 seconds
Docs5/5The book, command reference, cookbook, and examples are extensive
Community5/5Release and dense issue activity continued in August 2026
Maturity4/5Daily-driver adoption, but docs warn of change and 60 tests failed

Discussed on

  1. hnIntroducing nushell1,477 points
  2. hnGitHub – nushell/nushell: A new type of shell763 points
  3. hnNushell: Introduction to a new kind of shell319 points
  4. hnNushell.sh ls | where size > 10mb | sort-by modified295 points
  5. hnOne Year of Nushell213 points

Who it’s for

Developers who spend much of the day filtering JSON, CSV, tables, process lists, and API output.
Cross-platform teams that want the same shell concepts on Windows, macOS, and Linux.
Data-minded terminal users willing to learn a new language for typed pipelines.
Tool authors interested in binary plugins that exchange structured values with the shell.

Who it’s NOT for

Teams that need existing POSIX shell scripts to run unchanged: Nushell has its own syntax and data model, while external commands remain a compatibility bridge.
Administrators who need every command interface frozen: the README calls the project MVP-level and says some commands and the design may still change.
Contributors looking for a quick source cycle: our build took 386 seconds and the test command ran 359 seconds before ending with 60 failures.
Users who mostly chain text-oriented Unix commands and do not need typed values; fish or a mature POSIX shell will demand less relearning.
Production automation that cannot tolerate release-specific behavior without pinning and regression tests.

Setup reality

Our sandbox installed 738 Rust packages in 58 seconds. The build succeeded in 386 seconds. Tests exited 1 after 359 seconds: Cargo reported 4,128 passed and 60 failed out of 4,188. The supplied tail shows one grouped result with 2,028 passed, 30 failed, and 21 ignored, but does not identify the causes.

Most users should install release 0.115.1 from a package manager or provided binary. Configuration lives in config.nu; plugins are separate binaries found on PATH and registered through Nu's plugin protocol. Some optional capabilities need system dependencies.

The 17 MB checkout held 2,462 files and about 423,625 source lines. Our scan found 12 CI workflows, no Dockerfile, and a tests directory.

Pipelines keep tables and records intact between commands

Nushell changes the unit moving through a pipeline. ls produces rows with named columns, so filtering directories uses a condition on the type field instead of parsing spacing in text. The same where command can filter processes by CPU use. Opening a TOML file yields a nested record, and get package.version walks directly to a value. Tables are a display choice at the end, not the internal representation.

That model removes a familiar class of shell bugs. Spaces in filenames, locale-dependent headers, and column alignment matter less when built-ins exchange typed values. Lists, records, strings, numbers, dates, filesizes, and booleans retain meaning through each stage. The gain is largest when work involves JSON APIs, CSV exports, configuration files, or system inventory rather than a stream of unstructured log lines.

Existing executables work, but their output is still text

Nu can launch normal platform commands and connect their standard input and output. That keeps Git, compilers, package managers, and operating-system tools usable. It does not make an external program's output typed. You still need a parser or format-specific command when a tool prints human-oriented text, and shell quoting or environment behavior may differ from Bash, zsh, fish, or PowerShell.

Existing POSIX scripts are not Nushell programs. A team must decide where to keep conventional scripts and where Nu's language earns a rewrite. For personal interactive use, that boundary is manageable because a user can call external commands directly. For build and deployment automation, a half-ported script can be harder to debug than either a full Nu pipeline or the original shell version.

What happened when we ran it

Our run cloned commit cf5390e into a fresh unprivileged Rust container with 3 CPUs, 12 GB of RAM, and no secrets. Cargo installed 738 packages in 58 seconds. The build completed successfully in 386 seconds. That is more than 6 minutes for the build alone, before the test command began.

Tests exited 1 after 359 seconds. The aggregate supplied by our lab says 4,128 passed and 60 failed out of 4,188. The tail includes a grouped result with 2,028 passing, 30 failing, and 21 ignored across 40 groups, followed by Cargo's instruction to rerun the tests target. It also shows several plugin and external-command sanitization cases passing. The tail does not name the 60 aggregate failures or their causes.

The checkout contained 2,462 files, roughly 423,625 lines of source, and 17 MB before Cargo populated its build data. Our scan found 12 CI workflow files, no Dockerfile, and a tests directory. A 4,128-case green majority and extensive CI are meaningful, but the command still failed. Contributors should reproduce the exact failing groups on their supported platform before treating this commit as ready.

The language is pleasant when data work dominates the command line

Nu pipelines read left to right and reuse operations across data sources. Filter, select, sort, group, update, and reduce work on values rather than command-specific columns. The shell can open recognized file formats directly and save transformed results. Configuration is also Nu code, so aliases, menus, prompts, hooks, and environment changes use the same language a user enters interactively.

The learning curve is real because familiar punctuation can mean something else. String interpolation, closures, variable assignment, redirection, error handling, and command signatures follow Nu rules. Error messages benefit from a parser that understands the language, yet snippets copied from Bash will often need translation. The Nushell book, command reference, and cookbook are the correct starting point; the README is an orientation rather than a complete manual.

Plugins extend typed commands through a binary protocol

Plugins are executables available on PATH, commonly named with a nu_plugin_ prefix. They register commands and exchange structured values through a protocol described by the project. A filtering plugin can stream entries one at a time, while a sink receives the completed value. This lets languages outside the main Rust workspace participate without linking directly into the shell.

Separate processes add operational boundaries. Plugin versions must match expected protocol behavior, binaries need distribution for each platform, and an untrusted plugin has the permissions of the user running it. The structured interface is useful for specialized formats or services, but a small script may be easier to review. Start with built-in commands and add plugins only where they remove recurring code.

Release 0.115.1 is active software, not a frozen Unix replacement

The README calls Nushell a minimum viable product that many people use daily, then warns that some commands may be unstable and the design can change. That wording is fair. A shell sits underneath scripts, habits, and machine configuration, so even a sensible syntax change can be expensive. Keep configuration in version control and read release notes before upgrading a work machine.

Release 0.115.1 shipped on 2026-08-23 with builds for Windows, Linux, and macOS. GitHub recorded a push on 2026-08-26 and 1,438 open issues and pull requests combined. Same-day activity covered configuration lookup, structured data across nested Nu processes, semantic-version conversion, table filtering, Polars, documentation, and dependency updates. The large queue reflects a broad cross-platform shell and should be searched for your operating system and workflow.

Nushell is easiest to recommend as an additional shell first. Install the binary, port 5 commands that currently require brittle parsing, and keep the login shell unchanged until startup, remote sessions, environment tools, and scripts behave correctly. Typed pipelines can be a substantial improvement. The failed measured suite and stated design movement make staged adoption the responsible choice.

Alternatives

ProjectWhat it isPick it when
PowerShell gh↗A cross-platform shell whose pipeline carries .NET objects between commands.pick this instead when .NET administration, Windows tooling, and a mature object pipeline matter most.
fish gh↗A friendly interactive shell with strong defaults, completion, and conventional text pipelines.pick this instead when interactive comfort matters more than typed structured data.
ElvishA programmable shell with structured values, namespaces, and an interactive interface.pick this instead when you want structured shell ideas in a smaller Go-based project.

What people are saying

  1. [github-trending] nushell/nushell

Sources

  1. Nushell README
  2. Nushell book
  3. Nushell 0.115.1 release
  4. Nushell issues and pull requests

More dev tools reviews

v2rayNG · SecLists · hashcat · eslint · fastfetch · composer · the whole board →