Skip to main content

Command Palette

Search for a command to run...

深入瞭解 macOS 上的命令列計算機工具 bc

對於習慣使用終端機的開發者來說,bc 是一個不可或缺的工具。雖然 macOS 內建了圖形化的計算機應用程式,但在終端機環境中,bc 提供了快速、強大的計算功能,讓我們不必離開命令列即可完成各種運算。

Published
2 min read

bc 的歷史背景

bc 的全名是「basic calculator」或「bench calculator」,是一個支援任意精度運算的計算器語言。它的歷史可以追溯到 1975 年,首次出現在 Version 6 Unix 中。當時由貝爾實驗室的 Lorinda Cherry 開發,作為另一個計算器程式 dc(desk calculator) 的前端介面。

dc 使用的是反波蘭記法(Reverse Polish Notation),輸入方式對一般使用者來說較為陌生。而 bc 則提供了類似 C 語言的語法,讓使用者能以更直觀的方式進行計算。

不同的 bc 實作版本

隨著時間發展,bc 衍生出了幾個不同的實作版本:

1. 傳統 Unix 實作

最初的 bc 實作是作為 dc 的前端,將 bc 程式碼轉換成 dc 指令。這個版本仍然存在於一些 Unix 和 Plan 9 系統中。

2. GNU bc

GNU bc 由 Philip A. Nelson 開發,首次發布於 1991 年。這個版本不再是 dc 的前端,而是一個獨立的位元組碼直譯器,使用 C 語言編寫。GNU bc 在 GPL3 授權下發布,並加入了許多擴展功能,如:

  • 支援多字元的變數名稱
  • 添加了 &&||! 等邏輯運算子
  • if 語句可以使用 else 子句
  • 新增 print 語句用於輸出

值得注意的是,GNU bc 在 2017 年 4 月發布 1.07.1 版後,曾經有將近 8 年沒有更新。不過就在最近,2024 年 12 月和 2025 年 1 月,GNU bc 連續發布了 1.08.0 和 1.08.1 版本,打破了長期停滯的狀態。

3. OpenBSD 實作

OpenBSD 在 2003 年重新實作了自己的 bc 版本,以符合他們對系統安全性和授權條款的要求。

4. Gavin Howard 的實作(macOS 採用版本)

這是 macOS 上使用的版本,由 Gavin Howard 個人開發,從 2018 年開始的專案。這個版本採用 BSD 授權,具有以下特點:

  • 完全相容 POSIX 標準,同時實作了 GNU 擴展和 BSD 的點號(.)擴展
  • 用同一個執行檔同時提供 bcdc 功能(透過符號連結)
  • 在效能和穩定性上有許多改進
  • 提供更完善的錯誤處理
  • 支援更多的數學函數擴展

gavinhoward/bc @ GitHub

macOS 上的 bc

根據作者 Gavin Howard 在部落格中的說明,他的 bc 實作是從 macOS 13 Ventura 開始被 Apple 收錄進 macOS的。在此之前,macOS 使用的是其他版本。

截至 2025 年,查看各版本的狀況:

  • macOS 13.2.1 搭載的是 4.0.2 版
  • macOS 14.4 已更新到 6.5.0 版
  • macOS 15.4 更新到 6.7.6 版

macOS 採用的 bc 版本對應可參考 Apple Open Sourceapple-oss-distributions/bc @ GitHub

這個版本也被 FreeBSD 採用,在 FreeBSD 13.3-RELEASE 中成為預設版本。目前這個專案持續活躍開發中,最新版本是 6.4.0(2024年釋出)。

與其他工具的比較

雖然有許多命令列計算工具(如 Python、dc、expr 等),bc 仍有其獨特優勢:

  1. 任意精度運算(不受浮點數精度限制)
  2. 類 C 語言語法,易於學習
  3. 輕量級,啟動快速
  4. 幾乎在所有 Unix-like 系統上都可用
  5. 可編寫腳本,支援函數和流程控制

結語

bc 雖然是一個古老的工具,但它的設計理念和功能在今天仍然實用。特別是 macOS 採用的 Gavin Howard 實作版本,不僅保持了與傳統的相容性,還加入了現代化的改進。對於經常需要在終端機進行計算的使用者來說,熟悉 bc 絕對能提升工作效率。

而令人興奮的是,原本被認為已經停止開發的 GNU bc,在沉寂近 8 年後,最近又有了新的更新,顯示這個經典工具仍然保有生命力。這也反映了命令列工具在現代計算環境中的持續重要性。

More from this blog

當交通政策成為服從性測試:從公館圓環看雙北政治(Traffic Policy as Loyalty Test: Taipei's Gongguan Roundabout Case)

引言:2025 年 9 月 30 日的震撼場景 2025 年 9 月 30 日清晨,雙北數十萬通勤族經歷了一場交通噩夢。羅斯福路上,三十幾台公車連成一列,宛如火車般緩慢前進。從新店大坪林到公館,平常 20 分鐘的車程,這天花了整整一個小時。機車騎士被困在羅斯福路六段,「連機車都不會動」。有人哀嘆「住新店 10 年第一次看到這種盛況」,有人直呼「就像過年返鄉車潮」。 這一切,源於台北市政府一個月前開始的工程:拆除存在 58 年的公館圓環,填平公車專用地下道。 當天上午 7 點 30 分,台北市長蔣...

Dec 12, 20254 min read

解決 Proxmox Backup Server 在舊款 Intel NUC 上的開機問題:Intel Microcode 更新指南

前言 最近撿到一台 2016 年推出的 MSI Cubi 2 NUC(內部代號 MS-B142),搭載第七代 Intel® Core™ i5-7200U 處理器、DDR4 16GB 記憶體、128GB M.2 2242 SSD 和 1TB 7200 轉傳統硬碟(皆為 SATA 介面)。原本打算將它作為 Proxmox Backup Server (PBS) 4.0 來備份 PVE 環境的 VM 和 LXC,卻在安裝後遇到無法正常開機的問題。 問題描述 安裝 PBS 4.0 (基於 Debian ...

Nov 25, 20253 min read

民主與獨裁的界線:從定義到現實的批判性分析(Democracy vs. Dictatorship: From Theory to Practice)

2025 年 10 月 31 日,即將就任中國國民黨主席的鄭麗文接受德國之聲專訪時表示,俄羅斯總統普丁「不是獨裁者,而是民選產生的領袖」。這一言論引發廣泛討論,也凸顯了對民主與獨裁概念理解的重要性。本文將從政治學角度定義獨裁者,分析普丁政權的本質,並評析鄭麗文言論所反映的問題。

Oct 31, 20252 min read
C

Chris Yuan's Blog

54 posts