惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
Vercel News
Vercel News
D
DataBreaches.Net
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
小众软件
小众软件
美团技术团队
T
The Blog of Author Tim Ferriss
爱范儿
爱范儿
D
Docker
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
Blog — PlanetScale
Blog — PlanetScale
H
Hackread – Cybersecurity News, Data Breaches, AI and More
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
S
SegmentFault 最新的问题
云风的 BLOG
云风的 BLOG
B
Blog
雷峰网
雷峰网
The Cloudflare Blog

Help Net Security

Police arrest 10 suspected members of Black Axe cybercrime gang ShinyHunters claims it stole 1.4 million records from Udemy Sevii unveils Cyber Swarm Defense Mode to stop AI-driven attacks at scale Alleged Chinese hacker extradited to US over cyberattacks targeting COVID-19 research Cequence Agent Personas bring granular control and governance to enterprise AI agents NowSecure MARI gives enterprises evidence-based visibility into third-party mobile app risk The metrics killing your SOC, and what to use instead US state privacy fines reached $3.425 billion in 2025 Canada’s first SMS blaster case leads to three arrests Linux storage management tool Stratis 3.9.0 adds online encryption and cache-less pool startup TLS Connect gives SMBs a right-sized automated tool to manage TLS certificates Aptori expands its platform with autonomous offensive testing to reduce security bottlenecks Your IAM was built for humans, AI agents don’t care The AI criminal mastermind is already hiring on gig platforms 25 open-source cybersecurity tools that don’t care about your budget Product showcase: LuLu reveals unauthorized outbound connections from Mac apps Week in review: Claude Mythos finds 271 Firefox flaws, Vercel breach Users advised to drop passwords and make room for passkeys - Help Net Security Indirect prompt injection is taking hold in the wild - Help Net Security Compromised everyday devices power Chinese cyber espionage operations - Help Net Security New Cisco firewall malware can only be killed by pulling the plug - Help Net Security Meta is overhauling how you sign in, manage settings, and protect your accounts - Help Net Security Ubuntu 26.04 LTS delivers memory-safe system tools and live patching for Arm servers - Help Net Security OpenAI’s GPT-5.5 is out with expanded cybersecurity safeguards - Help Net Security AI is speeding up nation-state cyber programs - Help Net Security A study of 1,000 Android apps finds a privacy policy logging gap - Help Net Security IT spending to hit $6.31 trillion record, thanks to AI - Help Net Security Where AI in CI/CD is working for engineering teams - Help Net Security With AI's help, North Korean hackers stumbled into a near-undetectable attack - Help Net Security Hacker with a special interest in breaching sports institutions ends behind bars - Help Net Security
Brush shell 0.4.0 tightens script safety, widens platform...
Sinisa Marko · 2026-05-04 · via Help Net Security

Rust-based alternatives to traditional Unix shells continue to attract users who want bash compatibility alongside built-in features like syntax highlighting and history-based suggestions. Brush, a bash- and POSIX-compatible shell written in Rust, sits in that group, and version 0.4.0 brings more than 200 merged pull requests representing several months of development.

Brush shell

Bash features filled in

The release closes several long-standing gaps in bash compatibility. Brush now implements set -e (errexit) and pipefail with the same exemption rules bash has accumulated over the years. The set -u (nounset) option errors on unset variable references, including the interaction with ${#arr[i]}. The failglob option treats no-match globs as errors, and the ERR trap is implemented alongside earlier EXIT trap work. Coprocess support via coproc covers both parsing and execution. A new --noglob/-f command-line flag has been added, and unknown command-line options now exit with code 2 to match bash.

Arithmetic handling received attention across high-radix literals, overflow and underflow behavior, the legacy $[expr] syntax, the |= and ^= assignment operators, nested array indices, and infinite-recursion detection. Heredocs are more reliable inside command substitutions and quoted contexts. Builtins including caller, read, mapfile -O, getopts, compgen -A, and printf %q saw fixes or expansions. The maintainer warns that scripts which ran cleanly under v0.3.0 may now exit with errors that bash would also have produced, and treats this as intended behavior.

Platform reach widens

Using brush as a login shell on macOS works after a fix for a startup hang in that scenario. Windows path handling was overhauled, /dev/null emulation was added, and CI now exercises the Windows test suite. FreeBSD builds again, Android and 32-bit targets compile cleanly, and wasm32-wasip2 smoke tests run in CI. Windows support remains experimental.

Interactive features

An opt-in TOML configuration file at ~/.config/brush/config.toml allows brush-specific settings outside shell scripts. Zsh-style preexec and precmd hooks are available behind an experimental flag, useful for prompt frameworks and timing tools. Terminal integration with semantic prompt and command marking can be enabled the same way.

Readline macro support was added with follow-up work to handle real-world inputrc forms, improving compatibility with starship, atuin, and fzf. Completion fixes cover filename escaping, . and .. entries, the mark-directories setting, and COMP_KEY/COMP_TYPE population.

API changes for embedders

The Shell type is now generic over a ShellExtensions parameter, providing a hook for embedders to add custom builtins and variable behavior without forking. Shell fields are private, and serde features are available on both brush-parser and brush-core for AST and shell-state serialization. Scaffolding for a future winnow-based parser has been added, with the existing PEG parser remaining the production code path.

The minimum supported Rust version moves to 1.88. An opt-in build flag bundles coreutils builtins into a single binary, useful for containers, embedded scenarios, and Windows. Brush is distributed under the MIT license through crates.io, Homebrew, Arch Linux’s extra repository, and Nix.

Brush 0.4.0 is available for free on GitHub.

Must read:

Subscribe to the Help Net Security ad-free monthly newsletter to stay informed on the essential open-source cybersecurity tools. Subscribe here!