atuinsh/atuin · error

script not found

Error message

script not found

What it means

`atuin scripts run <name>` looks up the script in the script database by name; if no matching script exists, it bails with "script not found". This guards execution so only registered scripts can be run.

Source

Thrown at crates/atuin/src/command/client/scripts.rs:354

                    let value = input.trim().to_string();
                    variable_values.insert(var, serde_json::Value::String(value));
                }
            }

            let final_script = if variable_values.is_empty() {
                // No variables to template, just use the original script
                script.script.clone()
            } else {
                // If we have variables, we need to template the script
                debug!("Templating script with variables: {:?}", variable_values);
                template_script(&script, &variable_values)?
            };

            // Execute the script (either templated or original)
            Self::execute_script(final_script, script.shebang.clone()).await?;
        } else {
            bail!("script not found");
        }
        Ok(())
    }

    async fn handle_list(
        _settings: &Settings,
        _list: List,
        script_db: atuin_scripts::database::Database,
    ) -> Result<()> {
        let scripts = script_db.list().await?;

        if scripts.is_empty() {
            println!("No scripts found");
        } else {
            println!("Available scripts:");
            for script in scripts {
                if script.tags.is_empty() {
                    println!("- {} ", script.name);

View on GitHub (pinned to c0c717ab04)

Solutions

  1. Run `atuin scripts list` to see exact available script names and correct the spelling.
  2. If the script was renamed, use the new name.
  3. Run `atuin scripts reload` / wait for sync so the scripts DB is rebuilt from the record store.
  4. Create the script if missing: `atuin scripts new`.

Example fix

// before
atuin scripts run deply
// after
atuin scripts list   # find exact name
atuin scripts run deploy
Defensive patterns

Strategy: validation

Validate before calling

# shell
atuin scripts list | grep -qx "deploy" || { echo "script 'deploy' not found" >&2; exit 1; }
atuin scripts run deploy

Try / catch

if ! atuin scripts run "$name" 2>&1 | grep -q 'script not found'; then :; fi
# or check list first and fall back to creating the script

Prevention

When it happens

Trigger: `atuin scripts run NAME` where NAME is not present in the script store (typo, deleted script, scripts DB not rebuilt/synced, or running before `atuin scripts list` shows it).

Common situations: Typos in the script name, scripts created on another machine not yet synced, a fresh home directory without the scripts database, or running by a stale name after a rename.

Understand the failure class

Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.

Related errors


AI-assisted analysis of atuinsh/atuin@c0c717ab04 (2026-09-12). Data as JSON: /api/errors/639fdf07e1f5d265. Report an issue: GitHub.