Shannon

Configuration

Shannon stores its files in ~/.config/shannon/. The config directory respects XDG_CONFIG_HOME — if set, shannon uses $XDG_CONFIG_HOME/shannon/ instead.

Files

FilePurpose
env.shBash environment setup — PATH, env vars, API keys (runs first)
env.nuNushell env setup (runs after env.sh)
config.nuNushell config — keybindings, colors, hooks, completions
login.nuLogin shell config
history.sqlite3SQLite command history

None of these files are required. Shannon works out of the box.

env.sh (Bash Environment)

Shannon runs an optional bash script at startup via bash to set up the environment. Create ~/.config/shannon/env.sh:

# ~/.config/shannon/env.sh

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

# Custom paths
export PATH="$PATH:$HOME/.cargo/bin"
export PATH="$PATH:$HOME/.local/bin"

# Environment variables
export EDITOR="nvim"
export ANTHROPIC_API_KEY="sk-ant-..."

This runs once when shannon starts, before env.nu and config.nu. The resulting environment variables are injected into nushell’s Stack.

This is critical for compatibility — tutorials and AI always give instructions as “add this to your .bashrc.” Shannon’s env.sh lets you follow those instructions directly.

env.nu and config.nu (Nushell Config)

These are nushell’s native config files. See the Nushell configuration docs for full details.

Common settings:

# ~/.config/shannon/config.nu

$env.config.show_banner = false          # disable startup banner
$env.config.edit_mode = "vi"             # vi or emacs keybindings
$env.config.history.file_format = "sqlite"

The startup banner respects nushell’s $env.config.show_banner setting:

$env.config.show_banner = false    # no banner
$env.config.show_banner = "short"  # just startup time
$env.config.show_banner = true     # full welcome message (default)