Shannon logo Shannon

Getting Started

Installation

Requires the Rust toolchain.

cargo install shannonshell

Or install from git (latest development version):

cargo install --git https://github.com/shannonshell/shannon

Or build from source:

git clone https://github.com/shannonshell/shannon.git
cd shannon
cargo build --release

Configuration

Shannon uses your existing config files — no custom config directory needed.

Bash config

Shannon's bash subprocess starts as a login shell, loading your ~/.bash_profile (which conventionally sources ~/.bashrc). Any tutorial that says "add this to your .bashrc" — just do it. Shannon picks it up automatically.

# ~/.bash_profile (or ~/.bashrc)

# Homebrew
eval "$(/opt/homebrew/bin/brew shellenv)"

# Cargo/Rust
export PATH="$PATH:$HOME/.cargo/bin"

# Node (nvm, fnm, etc.)
. "$HOME/.nvm/nvm.sh"

At startup, Shannon captures bash's env vars and injects them into nushell, so PATH, nvm, homebrew, etc. are available in both modes.

Nushell config

Nushell config lives in the standard location: ~/.config/nushell/. If you already use nushell, Shannon shares your existing config.

# ~/.config/nushell/env.nu
$env.PATH = ($env.PATH | prepend "/opt/homebrew/bin")

Loading order

Shannon loads configuration in this order:

  1. ~/.bash_profile~/.bashrc — bash login init (env vars injected into nushell)
  2. ~/.config/nushell/env.nu — nushell environment
  3. ~/.config/nushell/config.nu — nushell settings

First Run

shannon

You'll see:

Welcome to Shannon, based on the Nu language, where all data is structured!
Version: 0.5.2 (nushell 0.111.0)
Startup Time: 27ms

[nu] ~/projects >

Shannon starts in nushell mode. All nushell commands work.

If commands like git, node, or brew aren't found, your PATH isn't set up — go back to the environment setup step above.

Switching Modes

Press Shift+Tab to toggle between modes:

[nu] ~/projects > ls | where size > 1mb    ← nushell
[bash] ~/projects > grep -r TODO src/     ← bash

Your environment variables and working directory carry over when you switch.

Running Commands

In nu mode, use nushell syntax:

[nu] ~/project > ls | sort-by modified
[nu] ~/project > $env.HOME

In bash mode, use bash syntax:

[bash] ~/project > echo hello && echo world
[bash] ~/project > export FOO=bar

Exiting

  • Ctrl+D — exit shannon
  • Type exit — also exits (works in all modes)