[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-why-brush-v0-4-matters-more-than-another-rust-shell-zh":3,"article-related-why-brush-v0-4-matters-more-than-another-rust-shell-zh":29,"series-tools-eb77fb2d-7c9a-49e9-90c4-ed1160873b3b":82},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":22,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":11},"eb77fb2d-7c9a-49e9-90c4-ed1160873b3b","why-brush-v0-4-matters-more-than-another-rust-shell-zh","為什麼 Brush v0.4 比另一個 Rust Shell 更重要","\u003Cp data-speakable=\"summary\">Brush v0.4 之所以重要，不是因為它又是一個 \u003Ca href=\"\u002Ftag\u002Frust\">Rust\u003C\u002Fa> shell，而是因為它開始像 Bash 和 POSIX 的可信替代品。\u003C\u002Fp>\u003Cp>Brush v0.4 的價值在於，它把自己從「可展示的原型」推進到「可以放進日常工作流」的層級：它補上 set -e、set -u、pi\u003Ca href=\"\u002Fnews\u002Fspeckv-adaptive-speculative-decoding-gamma-zh\">pe\u003C\u002Fa>fail、failglob、ERR trap、coprocesses 等 Bash 行為，也修掉關閉管線、stdout 損壞、非 UTF-8 history、\u003Ca href=\"\u002Fnews\u002Ffinding-structural-anomalies-regional-stats-zh\">異常\u003C\u002Fa>檔案描述元狀態這類邊角錯誤。對殼層來說，這不是小修小補，而是能不能被信任的分水嶺。\u003C\u002Fp>\u003Ch2>第一個論點\u003C\u002Fh2>\u003Cp>Brush v0.4 最重要的不是新增功能，而是補齊語義。對 shell 來說，兼容性就是產品本身，因為使用者不是來學一套新語言，而是要既有腳本照常運作。像 set -e、pipefail、ERR trap 這類行為，只要有一個細節和 Bash 不同，腳本就會在最意想不到的地方失敗。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1777969246720-94h3.png\" alt=\"為什麼 Brush v0.4 比另一個 Rust Shell 更重要\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>這種失敗不是理論問題，而是維運成本。很多 shell 專案卡住，不是因為大架構不好，而是卡在「一個 trap 沒觸發」「一個管線回傳值不一樣」「一個 glob 行為不一致」。Brush v0.4 把力氣花在這些地方，表示它理解真正的遷移門檻不是宣稱現代化，而是讓舊世界的腳本少出錯。\u003C\u002Fp>\u003Ch2>第二個論點\u003C\u002Fh2>\u003Cp>Brush v0.4 也證明 Rust 在 shell 這個場景裡不是裝飾品，而是處理失效邊界的工具。關閉的 pipe、壞掉的 stdout、非 UTF-8 history 檔、奇怪的 file descriptor 狀態，這些情境不會出現在漂亮的 demo 裡，卻會出現在真實終端機裡。殼層不是在正常情況下被評價，而是在一切都不正常時被評價。\u003C\u002Fp>\u003Cp>它也把 login shell 可用性拉到更實際的位置，尤其在 macOS 這類使用者把 shell 當入口的環境裡。Rust 不會自動保證正確性，但它至少提供更好的記憶體安全與錯誤處理基礎。對一個每天都會啟動、也會拿來跑腳本的工具來說，少一次 crash、少一次未定義行為，比多一個花俏功能更有價值。\u003C\u002Fp>\u003Ch2>反方可能怎麼說\u003C\u002Fh2>\u003Cp>反對者會說得很直接：使用者不需要另一個 shell，他們需要 Bash、POSIX sh 或 zsh 繼續穩定運作。兼容性專案常常花很多年追 ed\u003Ca href=\"\u002Fnews\u002Fwhy-kimi-k25-changes-open-source-agent-race-zh\">ge\u003C\u002Fa> case，最後還是活在主流 shell 的陰影下。從這個角度看，Brush 只是又一個「快好了」的重寫專案，市場上已經不缺這類東西。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1777969250773-4dca.png\" alt=\"為什麼 Brush v0.4 比另一個 Rust Shell 更重要\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>這個批評有它的道理，因為 shell 專案最後都要付 compatibility debt，Brush 也不例外。但這不構成否定 v0.4 的理由。相反地，當一個 shell 已經明確往 Bash\u002FPOSIX 對齊，還先把最容易炸掉工作流的語義與失敗處理補起來，它就不是在追求新奇，而是在建立可信替代品的最低門檻。Brush 仍然要持續交付，但 v0.4 已經證明它在解對問題。\u003C\u002Fp>\u003Ch2>你能做什麼\u003C\u002Fh2>\u003Cp>如果你是工程師，別把 Brush 當成玩具，直接拿你最常壞的腳本測它：失敗處理、trap、pipe、login shell 啟動、跨平台路徑與編碼。若你是 PM 或創辦人，這個版本的訊號更清楚：基礎設施工具的信任，不是靠宣傳功能建立，而是靠把邊角故障先消掉。Brush v0.4 提醒我們，在系統軟體裡，可靠性就是產品，兼容性就是證據。\u003C\u002Fp>","Brush v0.4 之所以重要，不是因為它又是一個 Rust shell，而是因為它開始像 Bash 和 POSIX 的可信替代品。","www.phoronix.com","https:\u002F\u002Fwww.phoronix.com\u002Fnews\u002FBrush-0.4-Shell-Released",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1777969246720-94h3.png","tools","zh","ad4b44cf-6b1c-49e9-941f-e6939f5a9a12",[17,18,19,20,21],"Brush","Rust shell","Bash compatibility","POSIX","shell reliability",[23,24,25],"Brush v0.4 的核心價值是兼容性，不是新奇感。","它把 shell 從 demo 推向可日常使用的可信替代品。","Rust 的意義在於提升邊界情境下的可靠性與跨平台穩定性。",2,"2026-05-05T08:20:26.165236+00:00","2026-05-05T08:20:26.003+00:00",{"tags":30,"relatedLang":41,"relatedPosts":45},[31,33,35,37,39],{"name":21,"slug":32},"shell-reliability",{"name":17,"slug":34},"brush",{"name":19,"slug":36},"bash-compatibility",{"name":20,"slug":38},"posix",{"name":18,"slug":40},"rust-shell",{"id":15,"slug":42,"title":43,"language":44},"why-brush-v0-4-matters-rust-shell-en","Why Brush v0.4 Matters More Than Another Rust Shell","en",[46,52,58,64,70,76],{"id":47,"slug":48,"title":49,"cover_image":50,"image_url":50,"created_at":51,"category":13},"9baa1cd3-aceb-4941-9616-fff1a84bcbc7","how-to-use-petros-ch32h417m-alef-board-zh","怎麼用 Petros CH32H417M Alef 板","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780663688097-3u0b.png","2026-06-05T12:47:32.525868+00:00",{"id":53,"slug":54,"title":55,"cover_image":56,"image_url":56,"created_at":57,"category":13},"19fa3298-7d97-45a8-b6d8-9aa69250aaef","midjourney-web-app-ai-art-zh","Midjourney 網頁版改變 AI 繪圖用法","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780653789121-5yz3.png","2026-06-05T10:02:34.359223+00:00",{"id":59,"slug":60,"title":61,"cover_image":62,"image_url":62,"created_at":63,"category":13},"154b7977-0f81-4206-87c3-29ddd24c838b","csub-openai-deal-turns-ai-into-coursework-zh","CSUB把 AI 變成課程","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780652010097-24pb.png","2026-06-05T09:32:56.938867+00:00",{"id":65,"slug":66,"title":67,"cover_image":68,"image_url":68,"created_at":69,"category":13},"4717539c-c454-4bc6-9467-ca505ec59d51","devin-desktop-unifies-windsurf-agent-control-zh","Devin Desktop 併入 Windsurf 與代理控制","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780650179224-erbw.png","2026-06-05T09:02:24.7016+00:00",{"id":71,"slug":72,"title":73,"cover_image":74,"image_url":74,"created_at":75,"category":13},"60918400-6f71-472c-a7c2-9ca219c81392","claude-code-dynamic-workflows-new-primitive-en-zh","Claude Code Dynamic Workflows：新原语來了","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780628571873-zwd8.png","2026-06-05T03:02:22.095066+00:00",{"id":77,"slug":78,"title":79,"cover_image":80,"image_url":80,"created_at":81,"category":13},"9816974a-8337-447e-9b37-0872c5d2ceb9","rigmodels-free-sora-3d-models-zh","RigModels 提供 54 個免費 Sora 3D 模型","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780609680630-4fz6.png","2026-06-04T21:47:30.947861+00:00",[83,88,93,98,103,108,113,118,123,128],{"id":84,"slug":85,"title":86,"created_at":87},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":89,"slug":90,"title":91,"created_at":92},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":94,"slug":95,"title":96,"created_at":97},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":99,"slug":100,"title":101,"created_at":102},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":104,"slug":105,"title":106,"created_at":107},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":109,"slug":110,"title":111,"created_at":112},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":114,"slug":115,"title":116,"created_at":117},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":119,"slug":120,"title":121,"created_at":122},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":124,"slug":125,"title":126,"created_at":127},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00",{"id":129,"slug":130,"title":131,"created_at":132},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]