bashate
A pep8 equivalent for bash scripts
Decision gist · record as of 2026-08-14
No—unless you are maintaining legacy OpenStack infrastructure or a codebase already using bashate. The package is abandoned (last release 2022-10-06) with no active maintenance. For new projects, consider actively maintained alternatives. If you inherit a bashate-based workflow, the low install friction and permissive license make it safe to keep, but do not adopt it for new linting setups.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python >=3.5; designed for POSIX/Linux environments.
- Low install friction with a single runtime dependency (pbr).
- However, the package is abandoned—last release was 2022-10-06, over 1408 days ago.
License · maintenance · safety
permissive license (permissive) — Licensed under Apache License (permissive). No licensing restrictions on use or modification in most contexts.
last release 2022-10-06 (1408 days)
0 known vulnerabilities (OSV.dev, 2026-08-14) · 80,810 downloads/mo, #14,268 on PyPI
Alternatives
Verify before relying
pip install bashate
bashate script.sh- Whether the E-code checks (E001–E044) remain accurate for modern bash versions and syntax.
- Current compatibility with Python versions beyond 3.9, given the package's abandoned status.
What it is and what it does
bashate is a command-line linter that checks bash scripts against a fixed set of style rules modeled after Python's pep8 (pycodestyle). It identifies six categories of issues: trailing whitespace, tab indentation, non-multiple-of-4 indents, missing final newlines, missing shebangs, and line length violations. It also enforces structural rules (e.g., *then* on the same line as *if*) and flags deprecated or unsafe bash syntax like `$[` arithmetic or unsafe local declarations.
The tool outputs results in pycodestyle format and was originally developed within the OpenStack DevStack project. It depends only on pbr for packaging and has low installation friction. However, the package has been abandoned since October 2022 with no active maintenance, meaning bug fixes or updates for newer bash versions are unlikely.
Use it for
- Enforce consistent bash indentation and whitespace in CI/CD pipelines for infrastructure-as-code projects.
- Catch deprecated bash syntax patterns (e.g., $[ arithmetic) before code review in shell-heavy DevOps teams.
- Lint deployment scripts and system administration tools for basic style compliance without external dependencies.
- Integrate into pre-commit hooks to flag trailing whitespace and structural issues in shell scripts automatically.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
No—unless you are maintaining legacy OpenStack infrastructure or a codebase already using bashate.
The package is abandoned (last release 2022-10-06) with no active maintenance. For new projects, consider actively maintained alternatives. If you inherit a bashate-based workflow, the low install friction and permissive license make it safe to keep, but do not adopt it for new linting setups.
Install
bashate on PyPI
Before you install
Low install friction with a single runtime dependency (pbr). However, the package is abandoned—last release was 2022-10-06, over 1408 days ago. No active maintenance or security updates should be expected.
Requires Python >=3.5; designed for POSIX/Linux environments.
License in practice
Licensed under Apache License (permissive). No licensing restrictions on use or modification in most contexts.
Quickstart
pip install bashate
bashate script.sh
Verify before relying
- Whether the E-code checks (E001–E044) remain accurate for modern bash versions and syntax.
- Current compatibility with Python versions beyond 3.9, given the package's abandoned status.
Package facts
| License | permissive license permissive |
| Python support | Supports the current Python release >=3.5 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packagepbr |
| Maintenance | Abandoned 1,408 days since the last release |
| First released | |
| Downloads | 80,810 / month, #14,268 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Environment :: OpenStackIntended Audience :: Information TechnologyIntended Audience :: System AdministratorsLicense :: OSI Approved :: Apache Software LicenseOperating System :: POSIX :: LinuxProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.5Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPython |
Evidence: bashate-2.1.1-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “bash style checker”
- bashatebashate is a style checker for bash scripts that applies pep8-like…
- sphinxcontrib-shellcheckA Sphinx extension that automatically lints shell code blocks in…
- tree-sitter-bashProvides a tree-sitter grammar for parsing Bash shell scripts into an…
Give your agent the search over MCP, or paste the wish link into any chat.
More Quality Assurance packages
Coverage.py measures which lines of Python code are executed during test runs, reporting coverage percentages and identifying untested code paths.
Install it if you want to measure test completeness or enforce coverage thresholds in your project.
Ruff is a Python linter and code formatter written in Rust that combines linting, formatting, and code fixing into a single tool, replacing Flake8, Black, isort, and related utilities.
Pexpect spawns and controls interactive console applications by sending input and matching output patterns, automating tasks that would otherwise require manual interaction.
Black reformats Python source code to a consistent style by parsing entire files and rewriting them according to an opinionated, deterministic set of rules, eliminating manual formatting decisions.
pytest-xdist distributes pytest tests across multiple CPU cores or machines to speed up test execution, with the simplest usage being `pytest -n auto` to spawn workers equal to available CPUs.
Install it if your test suite takes long enough that parallelization would save meaningful time.
Validates AWS CloudFormation templates in YAML or JSON format against resource provider schemas and best practices, checking property values and configuration correctness.
Install it if you work with CloudFormation templates.
See also pycodestyle · autopep8 · pep8 · yapf · flake8 · doc8 · pytest-pep8 · yamllint · pytest-flake8 · tclint