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:
-
~/.bash_profile→~/.bashrc— bash login init (env vars injected into nushell) -
~/.config/nushell/env.nu— nushell environment -
~/.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)