shuck
shuck

A fast shell script linter, built in Rust. Checks for correctness, portability, and style issues in your shell scripts.

Install

cargo install shuck-cli

Usage

shuck check .
shuck check deploy.sh
warning[C006]: double-quote this variable to prevent word splitting
--> deploy.sh:3:10
|
3 | rm -rf $build_dir
| ^^^^^^^^^^
|
 
warning[C019]: use "$@" instead of $* to preserve argument boundaries
--> deploy.sh:7:12
|
7 | for arg in $*; do
| ^^
|
 
error[C003]: use $(...) instead of legacy backtick syntax
--> deploy.sh:12:10
|
12 | local v=`git describe`
| ^^^^^^^^^^^^^^^
|

Fast

Built in Rust with per-file caching. Lints thousands of shell scripts in seconds.

Compatible

Supports ShellCheck suppression directives and SC codes. Migrate incrementally without rewriting your existing inline annotations.

Multi-Shell

Lint bash, sh, dash, ksh, mksh, and zsh scripts. Real parser support for each dialect, not just regex matching.

Integrated

Works with your editor, CI pipeline, and pre-commit hooks. One binary, zero dependencies.