atuinsh/atuin · error

script ' ' not found

Error message

script '{}' not found

What it means

`atuin script get <name>` bails with this when no script matching the given name exists in the script database. handle_get only prints the script when the DB lookup returns Some; the None branch produces this message with the requested name interpolated.

Solutions

  1. Run `atuin script list` and copy the exact name
  2. Run `atuin sync` and `atuin store rebuild` to pull scripts from the server
  3. Recreate the script if it was intentionally deleted
Defensive patterns

Strategy: validation

Validate before calling

let exists = script_db.get_by_name(&name).await?.is_some();
if !exists { eprintln!("unknown script: {name}"); return Ok(()); }

Prevention

When it happens

Trigger: `atuin script get <name>` where `script_db.get_by_name(name)` returns None.

Common situations: Misspelled name, script not yet synced to this machine, case mismatch, or the script was removed after sync from another host.

Understand the failure class

Background: "Not found" and "does not exist" errors: why "Task not found", "No such folder", and "Can't find" fire when a lookup comes back empty — this error's family across 14 libraries.

Related errors


AI-assisted analysis of atuinsh/atuin@900007c480 (2026-09-19). Data as JSON: /api/errors/594e9f864a098b0e. Report an issue: GitHub.

Appendix: source

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

                println!("tags: []");
            } else {
                println!("tags:");
                for tag in &script.tags {
                    println!("  - {tag}");
                }
            }

            println!("shebang: {}", script.shebang);

            println!("script: |");
            // Indent the script content for proper YAML multiline format
            for line in script.script.lines() {
                println!("  {line}");
            }

            Ok(())
        } else {
            bail!("script '{}' not found", get.name);
        }
    }

    #[allow(clippy::cognitive_complexity)]
    async fn handle_edit(
        _settings: &Settings,
        edit: Edit,
        script_store: ScriptStore,
        script_db: atuin_scripts::database::Database,
    ) -> Result<()> {
        debug!("editing script {:?}", edit);
        // Find the existing script
        let existing_script = script_db.get_by_name(&edit.name).await?;
        debug!("existing script {:?}", existing_script);

        if let Some(mut script) = existing_script {
            // Update the script with new values if provided
            if let Some(description) = edit.description {

View on GitHub (pinned to 900007c480)