Nearly half of all developers — 49% — used Bash or shell scripting in 2025, ranking it fifth among all programming languages in the Stack Overflow Developer Survey, ahead of TypeScript. This post compiles verified usage data on Bash, Zsh, and Fish from survey results, GitHub engagement figures, OS-level defaults, and performance benchmarks through early 2026.
Bash vs Zsh vs Fish Shell: Key Statistics
- Bash/Shell scripting reached 49% developer adoption in 2025, up roughly 15 percentage points from the prior year, per Stack Overflow.
- Oh My Zsh has accumulated 170,000+ GitHub stars — more than five times the Fish shell core repository’s 30,700 stars.
- macOS Catalina (2019) made Zsh the default shell for all new Mac installs, affecting the 31.8% of developers who use macOS personally.
- Zsh with Oh My Zsh and several plugins can take 500–1,000ms to start, versus under 50ms for bare Bash.
- Fish 4.0, released in February 2025, was rewritten from C++ to Rust, cutting its startup time to under 100ms.
How Does Bash Shell Scripting Rank Among Developers?
The Stack Overflow Developer Survey tracks “Bash/Shell script” as a single category covering both interactive shell users and developers writing automation scripts. In 2025, 49% of respondents used it extensively in the past year — placing it fifth overall, ahead of TypeScript at 44%.
That 49% figure represents a jump of roughly 15 percentage points from 2024. A newsletter analysis of the 2025 results attributed the climb to growing demand for automation and DevOps workflows. The 2022 survey, which measured professional developers only, recorded 29% Bash/Shell usage, which makes the 2025 number even more pronounced.
One important caveat: this category bundles Zsh users writing Bash-compatible scripts alongside native Bash users. A developer running Zsh interactively while scripting for CI/CD pipelines still counts under Bash/Shell here.
Source: Stack Overflow Developer Survey 2025, 2022; GIGAZINE analysis of 2024 survey data
| Survey Year | Bash/Shell Usage | Overall Rank | Respondents |
|---|---|---|---|
| 2025 | 49% | 5th | 49,000+ |
| 2024 | ~34% (est.) | 6th | 65,437 |
| 2022 (Pro Devs) | 29% | — | ~70,000 |
Source: Stack Overflow Developer Survey 2022–2025
Developers using the terminal emulators covered in Linux terminal emulator statistics likely contribute significantly to this number, since terminal-heavy workflows correlate with heavier shell scripting use.
Bash vs Zsh vs Fish Shell: GitHub Community Size
GitHub star counts offer an indirect but verifiable measure of community interest. They don’t equal active user counts, but they reflect where developers concentrate attention, documentation, and plugin development.
Oh My Zsh sits at 170,000+ stars — the most starred shell framework on GitHub by a large margin. The Fish shell core repository has roughly 30,700 stars. The gap is substantial, though it partially reflects a structural difference: Zsh’s community aggregates around one dominant framework, while Fish users are spread across individual plugin managers like Fisher, with no single hub drawing comparable attention.
Source: GitHub topics pages — github.com/topics/oh-my-zsh, github.com/topics/fish (2025–2026)
| Project | GitHub Stars | Type | Notes |
|---|---|---|---|
| Oh My Zsh | 170,000+ | Zsh framework | Most starred shell framework on GitHub |
| Starship (prompt) | ~40,900 | Cross-shell (Rust) | Works with Bash, Zsh, Fish |
| zsh-autosuggestions | ~33,700 | Zsh plugin | Fish-style suggestions ported to Zsh |
| fish-shell | ~30,700 | Fish core repo | Official Fish repository |
| Oh My Fish | ~11,000 | Fish framework | Flagged as unmaintained as of 2025 |
Source: GitHub topics pages, 2025–2026
The zsh-autosuggestions plugin alone matches the Fish shell repository in star count — which shows how much demand exists among Zsh users for Fish’s defining interactive feature. Bash has no comparable standalone framework with this level of engagement, partly because Bash ships ready to use on nearly every Linux distribution without any additional setup.
This matters for understanding how Git usage on Linux and other platforms breaks down by workflow type — developers in automated, script-heavy environments tend to stay closer to Bash, while those in interactive, terminal-focused workflows are the primary Zsh and Fish adopters.
How macOS Changed the Zsh Adoption Rate After 2019
Apple switched the default login shell from Bash to Zsh with macOS Catalina in 2019. Since macOS accounts for 31.8% of developer personal device usage and 33.2% of professional usage in 2024, that single OS decision pushed Zsh onto tens of millions of developer machines without any deliberate choice by the user.
Every macOS developer who hasn’t manually changed their default shell now runs Zsh. This is a meaningful driver of Zsh’s installed base, but it doesn’t reflect intentional adoption in the same way that a developer configuring Oh My Zsh and a full plugin suite does.
| Platform | Developer Usage (Personal) | Developer Usage (Professional) |
|---|---|---|
| Windows | 59.2% | — |
| macOS (Zsh default since 2019) | 31.8% | 33.2% |
| Ubuntu | 27.7% | — |
| WSL (Windows Subsystem for Linux) | 17.1% | 16.8% |
Source: Stack Overflow Developer Survey 2024, via commandlinux.com
WSL’s 17.1% personal adoption adds to Bash’s footprint on the other side. Most WSL installations default to Bash, which means a substantial share of Windows developers are also running Bash environments regularly — even if their primary OS is Windows. The Arch Linux setup process represents the opposite end: users who configure their entire environment deliberately and are far more likely to choose a shell consciously rather than inherit a default.
Bash vs Zsh vs Fish Shell Startup Performance
Startup time is the most commonly cited practical difference between these shells. Bare Bash launches in under 50ms. Bare Zsh comes in under 100ms. The problem emerges when Oh My Zsh and several plugins are loaded — startup times between 500ms and 1,000ms are reported regularly, and this is the most common reason developers migrate away from Oh My Zsh toward lighter plugin managers like zinit.
Fish 4.0, released in February 2025 and rewritten in Rust, brought startup times to under 100ms — competitive with bare Zsh. Fish 4.5.0 followed in February 2026. Before the Rust rewrite, Fish’s startup overhead was a persistent criticism from developers evaluating it against optimized Zsh setups.
Source: Medium/@awaleedpk Zsh vs Fish analysis; bitdoze.com Fish vs Bash vs Zsh comparison
| Shell / Configuration | Typical Startup Time | Notes |
|---|---|---|
| Bash (bare) | < 50ms | No framework, minimal config |
| Zsh (bare) | < 100ms | Without Oh My Zsh |
| Fish (v4.0+, Rust) | < 100ms | Rewritten Feb 2025; Fish 4.5.0 latest (Feb 2026) |
| Zsh (zinit, optimized) | ~100–200ms | With lazy loading |
| Zsh (Oh My Zsh + plugins) | 500–1,000ms | Known pain point; drives migration |
Source: Medium/@awaleedpk; bitdoze.com
The typical upgrade path — install Zsh, add Oh My Zsh, accumulate plugins, notice slow starts, then switch to zinit or Fish — describes a real and common developer trajectory. Oh My Zsh’s 2,400+ contributors and 300+ bundled plugins reflect both its strength and the source of its main weakness. Viewing your Linux command history with timestamps is one of many shell behaviors that vary in speed depending on how aggressively the shell environment has been loaded with plugins.
POSIX Compliance and Bash vs Zsh vs Fish Compatibility
POSIX compliance determines whether scripts written for one environment run without modification elsewhere. Bash is fully POSIX compliant and is the de facto standard for CI/CD pipelines, Docker containers, and server automation scripts. Zsh runs most Bash scripts without modification. Fish does not — scripts written for Fish require a rewrite to run in Bash or Zsh.
This has practical consequences for how developers use these shells. A Fish user working in a shared codebase still typically writes Bash scripts for automation. The interactive shell and the scripting language are often different choices made for different reasons. This is precisely why Stack Overflow’s Bash/Shell scripting figures don’t translate directly into interactive shell distribution numbers.
| Shell | POSIX Compliant | Bash Script Compatibility | Default on Linux | Default on macOS |
|---|---|---|---|---|
| Bash | Yes | N/A | Yes (most distros) | No (post-Catalina) |
| Zsh | Mostly | High | No | Yes (Catalina+) |
| Fish | No | Low | No | No |
Source: tecmint.com; bitdoze.com
DevOps engineers, system administrators, and backend developers working across mixed environments stay on Bash for portability. Frontend developers and those in macOS-dominated teams have more freedom to run Zsh or Fish interactively, since they’re less likely to need their interactive shell syntax to match their deployment scripts. This audience overlap is why Linux encryption usage data and shell preference data tend to cluster around the same infrastructure-focused developer profiles.
Oh My Zsh Ecosystem Size vs Fish Plugin Community
Oh My Zsh ships with 300+ bundled plugins, 140+ themes, and has 2,400+ contributors on GitHub. That contributor count is one of the more meaningful indicators of community health — it reflects ongoing maintenance, new plugin development, and documented workflows.
Fish’s plugin ecosystem operates differently. Oh My Fish, the framework that once served as Fish’s equivalent of Oh My Zsh, has been flagged as unmaintained by its own maintainers. The community shifted to Fisher, an individual package manager that handles plugins without a monolithic framework. This makes Fish’s ecosystem harder to measure through any single repository’s statistics, which partly explains why its aggregate GitHub engagement looks smaller than Zsh’s despite Fish having a dedicated user base.
| Metric | Oh My Zsh | Oh My Fish / Fisher |
|---|---|---|
| Bundled plugins | 300+ | Not bundled (package-based) |
| Themes | 140+ | Various |
| Contributors | 2,400+ | — |
| GitHub stars | 170,000+ | ~11,000 (Oh My Fish) |
| Status | Active | Oh My Fish flagged unmaintained |
Source: ohmyz.sh; github.com/ohmyzsh; github.com/topics/oh-my-fish
For reference, the DNS server market share data on Linux shows a comparable pattern: dominant tools accumulate community resources and documentation faster than alternatives, even when the alternatives have real technical advantages. Zsh’s framework advantage compounds its macOS default status to give it broader ecosystem coverage than raw preference numbers alone would suggest.
FAQs
Which shell do most developers use in 2025 — Bash, Zsh, or Fish?
No single survey directly measures interactive shell distribution. Bash leads in scripting use at 49% (Stack Overflow 2025). Zsh has the largest framework community by GitHub stars, boosted by macOS making it the default since 2019. Fish has a smaller but dedicated user base.
Why did Zsh become more popular after 2019?
Apple made Zsh the default login shell in macOS Catalina (2019). Since roughly 31.8% of developers use macOS personally, this put Zsh on tens of millions of developer machines without any deliberate user action.
Is Fish shell faster than Zsh?
Fish 4.0 (February 2025), rewritten in Rust, starts in under 100ms — matching bare Zsh. Zsh with Oh My Zsh and multiple plugins can reach 500–1,000ms. Optimized Zsh setups using zinit land at 100–200ms.
Can Fish shell run Bash scripts?
No. Fish is not POSIX compliant and has low compatibility with Bash scripts. Scripts written in Fish syntax require a rewrite to run in Bash or Zsh. Most Fish users still write Bash scripts for shared automation and CI/CD pipelines.
How many plugins does Oh My Zsh have?
Oh My Zsh ships with 300+ bundled plugins and 140+ themes, maintained by 2,400+ contributors. The Fish equivalent, Oh My Fish, was flagged as unmaintained by its own maintainers; the Fish community shifted to the Fisher package manager.