A static analysis tool that finds bugs, potential issues, and suggests improvements in bash/sh shell scripts.
ShellCheck is a static analysis tool for shell scripts (bash/sh) that scans code for bugs, potential issues, and stylistic problems. It helps developers avoid common pitfalls, improve script robustness, and write more secure and portable shell code by providing detailed warnings and suggestions.
Shell script developers, DevOps engineers, system administrators, and anyone writing or maintaining bash/sh scripts, from beginners to advanced users.
Developers choose ShellCheck for its comprehensive rule set, clear explanations of issues, and seamless integration into editors and CI/CD pipelines, making it the de facto standard for shell script linting.
ShellCheck, a static analysis tool for shell scripts
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Clarifies cryptic shell error messages with actionable suggestions, demonstrated in the gallery of bad code for common syntax mistakes like unquoted variables.
Provides inline feedback in Vim, VSCode, Emacs, and more via plugins, with screenshots and setup details in the README for seamless adoption.
Easily integrates into build systems and CI services like GitHub Actions and Travis CI, with examples for Makefiles and YAML configurations.
Alerts when using features unsupported by the script's shebang (e.g., #!/bin/sh), helping avoid cross-shell compatibility issues.
Building from source requires a Haskell toolchain (Cabal) and 2GB of RAM, which can be prohibitive for users without pre-compiled binaries.
Does not handle code style or indentation; the README explicitly notes it defers to shfmt for formatting, necessitating additional tooling.
Cannot detect runtime issues or dynamically generated script parts, limiting effectiveness for eval-heavy or complex interactive scripts.