Linux中國

《代碼英雄》第三季(6):Bash Shell 中的英雄

本文是《代碼英雄》系列播客《代碼英雄》第三季(6):Bash Shell 中的英雄音頻腳本。

導語:Shell 使得大規模 IT 成為可能。它們是現代計算的必要組成部分。但是,如果沒有 自由軟體基金會 Free Software Foundation 一位名叫 Brian Fox 的開發者的辛勤工作,它可能不會變成這樣。現在,世界上幾乎每台電腦都有 Bash shell。

在上世紀 70 年代, 貝爾實驗室 Bell Labs 希望將重複的、複雜的命令序列自動化。Chet Ramey 描述了貝爾實驗室是如何開發出幾個 shell 的 —— 但 UNIX 只能有一個官方支持的 shell。獲選的是 Bourne shell。儘管 Bourne shell 是這些之中最好的一個 shell,但它也有其局限性。而且它只有在受到限制的 UNIX 許可證下才能使用。Brian J. Fox 講述了他在自由軟體基金會的工作,他需要創建一個自由的 Bourne shell 版本。它必須兼容但不使用任何原始源代碼的元素。這個 Bourne-Again Shell,即 Bash,可能是這個星球上使用最廣泛的軟體。而 Taz Brown 描述了它是如何成為一個開發者可以學習使用的最重要的工具之一。

00:00:07 - Saron Yitbarek

那是 1987 年。里根總統治下的美國正蓬勃發展,一個懷揣遠大夢想的人正驅車前往他位於 聖巴巴拉 Santa Barbara 的新家。這個人名叫 Brian Fox,27 歲,是高中輟學生。在他車的後備箱里,有兩盒巨大的磁帶,裡面載滿了他當時正在編寫的代碼。

00:00:28

Fox 多年來一直以程序員的身份工作在所謂的自由軟體運動中。他相信他鎖在這個後備箱里的代碼,可以帶來一場革命,這是一種全新的軟體範例。他的社區正在一點一點地使之成為現實。

00:00:49

那年, 理查德•斯托曼 Richard Stallman (RMS)的 自由軟體基金會 Free Software Foundation 的一組程序員,正在想盡辦法給計算機界帶來自由。他們想要構建一個 UNIX 的替代品,以取代自從 70 年代以來就主導編程的 UNIX 操作系統。他們的 GNU(表示 GNU's not UNIX)將成為公眾的操作系統,任何人都可以使用它,無需擔心許可費用或版權問題。

00:01:18

多年以來,基金會一直在努力製造這個嶄新的系統。那麼 Brian Fox 汽車後備箱里的那兩盒裝著代碼的巨型磁帶是什麼?它們存儲著這個系統一個至關重要的組成部分。這是一個自由的,而且可更改的 shell,它能夠使 GNU 操作系統變得完整。這是 Brian Fox 送給自由軟體運動的禮物。他稱之為 Bash。

00:01:46

我是 Saron Yitbarek,這裡是 代碼英雄 Command Line Heroes ,一檔來自 紅帽 Red Hat 的原創播客節目。在這一集中,我們將來看看 Bash shell 中的英雄們。我們將探索 shell 的歷史,以及它們為什麼對我們如今的工作如此重要。大家可以將 shell 看作要給演員的劇本。它們提供了完整的命令序列,然後 shell 可以快速地運行,就像演員可以一行接一行地讀她的台詞一樣。這是對於實現重複且複雜的代碼的,是最終的解決方案,也是自動化的關鍵。你可能會說,shell 腳本是我們開發的一大助力。但是,是否可以編寫一個,能給所有人帶來幫助的 shell?這就是挑戰所在。

00:02:38 - Ken Thompson

讓我們回到 1969 年。那時候貝爾實驗室的幾位計算機科學家,正在根據自己的需求開發程序。

00:02:48 - Saron Yitbarek

這位是代碼英雄先驅 Ken Thompson。由貝爾實驗室設計的 UNIX 操作系統,在一開始確實是供他們個人使用的。最初,它只是一個內部系統。UNIX 鼓勵程序員之間進行密切的交流,不過目的並不是要改變整個世界,而是改變貝爾實驗室。

00:03:13 - Ken Thompson

到現在,幾乎整個貝爾實驗室都在使用這個系統。我們公司擁有近兩萬個計算機終端,其中大多數使用 UNIX 系統。

00:03:25 - Saron Yitbarek

一款由 Ken Thompson 所設計的 UNIX shell 在 1971 年發布。 雖然 Thompson shell 被設計為命令行解釋器,但是它卻不能很好地支持腳本。所以直到六年後的 1977 年,腳本才開始興起。

00:03:44 - Chet Ramey

Shell 參數、特殊參數以及我們如今認為理所當然的變數,起源於 Steve Bourne 和 Bourne shell。

00:03:57 - Saron Yitbarek

這位是 Chet Ramey,Case Western Reserve 大學的 IT 架構師。Chet 致力於維護 Bash,他也為我們講述了許多 Bash 的起源故事。他描述了貝爾實驗室當時研究 UNIX shell 樣子時的情景。

00:04:13 - Chet Ramey

我們如今使用的編程結構起源於 Steve Bourne,他的 shell 贏得了這場比賽。當時有大量使用 Mashey shell 的用戶社區,也有大量用戶開始使用 Bourne shell。那時候成立了一個委員會來決定哪一個將會獲勝,哪一個將會成為從那時候起得到官方支持的 UNIX shell, Bourne 的 shell 贏了。而其他的 shell,正如他們所說,成為了歷史。

00:04:54 - Saron Yitbarek

不過,這還不是歷史的終結。當然,Bourne shell 是一個巨大的飛躍。它打開了一扇通向更高自動化水平的大門。但是儘管有一段時間 Bourne 佔據了上風,但是 Bourne shell 並不能解決我們所有的腳本需求。

00:05:14 - Chet Ramey

Bourne 撰寫自己的 shell 時所受到的限制,幾乎是現在的你我難以想像的。顯然,當你遇到這些限制時,你不得不放棄很多東西,Bourne 就放棄了很多。考慮到他所處理的空間、內存和 CPU 限制,他能夠讓 Bourne shell 包含那麼多東西,這相當了不起。

00:05:42 - Saron Yitbarek

請記住,Bourne shell 仍然是貝爾實驗室 UNIX 系統的一部分。它仍然與 UNIX 許可證綁定。這意味著它不是自由的,不是開放的。這款 shell 是私有的。

00:05:55 - Chet Ramey

如果你不在大學裡,獲取 UNIX 源碼將會非常困難。顯然,這對 Berkeley UNIX 的普及產生了影響。Berkeley UNIX 始於大學中,在大學社區中成長,並走了一條阻力最小的道路。因此,如果你在正確的地方,訪問到 Bourne shell 的源碼並不困難,但是總的來說,這並不是大眾都能夠認可的方案。

00:06:36 - Saron Yitbarek

Chet Ramey 是 Bash shell 的維護者。

00:06:41

因此,我們有了 shell 的雛形,可以著手寫這些關鍵的組成部分,但是目前為止,最好的 shell 的許可證卻有個大大的問題,它是閉源的。對於理查德•斯托曼和他的自由軟體基金會而言,這是絕對無法接受的事情。我們所需要的是一個不與任何公司綁定的 shell,一個面向所有人的 shell。

00:07:05

但這就帶來了問題。這意味著我們需要編寫某種,能做到 Bourne shell 所能做到的一切,而又不會侵犯到版權的東西。如果逐字複製 Bourne shell 的代碼,你會被起訴。

00:07:20

為了使人們擺脫 Bourne shell 的束縛,你必須找到一位能在沒看過 Bourne shell 任何源代碼的情況下,編寫這款複雜程序的程序員。你必須找到這樣的一位局外人天才。而理查德•斯托曼找到了完成這項工作的程序員。

00:07:46

Brian Fox 是一名 20 來歲的高中輟學生,比貝爾實驗室的大多數人更懂代碼。他從來沒有見過任何 Bourne shell 的源代碼,這使得他非常適合手頭的任務。

00:08:02 - Brian Fox

我是 Brian Fox。

00:08:04 - Saron Yitbarek

為什麼不直接問問這個年輕人,這個故事是什麼樣的呢?現如今,Fox 是一位開源倡導者以及 Opus Logica 的 CEO。但是早在 80 年代後期,他只是一個信仰開源軟體運動的年輕人。我們聊了聊過去的日子,以及 Bash 是如何從那時演變過來的。

00:08:23

所以那時候理查德•斯托曼請你為 UNIX 開發一款 shell。那將會是一款自由的 shell,並且是 Bourne shell 的替代品。你是如何回應的呢?

00:08:38 - Brian Fox

「我們就不能做個更棒的嗎?」

00:08:41 - Saron Yitbarek

我喜歡這個。再多跟我說說。

00:08:45 - Brian Fox

我為斯托曼所做的第一件事,其實就是編寫個信息技術文檔系統。我讓理查德驚訝於我做這種編程的速度。他是個優秀的程序員而且工作的很快,但是他不認為其他人也能寫得那麼快。

00:09:00 - Brian Fox

因此,在第一周內,我完成了一款名為 GNU Info 的程序的第一版實現,理查德對此有點兒震驚。我說:「我的下一個項目是什麼?我的下一個項目是什麼?」他說:「好吧,現在給它做個編譯器吧。」我就做了,一周時間之內就完成了。然後我說:「我的下一個項目是什麼?我的下一個項目是什麼?」他說:「好吧,另一個傢伙一直在研究那個 shell,但他還沒有太多進展。」我說了「好的」,九個月後, Bourne shell 的替代品完成了。

00:09:29 - Saron Yitbarek

九個月,哇。再多告訴我一些。為什麼它如此具有挑戰性?

00:09:33 - Brian Fox

這真是個有趣的問題。它之所以如此具有挑戰性,是因為我們必須忠實地模仿 Stephen Bourne 最初的 Bourne shell 的所有行為,同時對其進行擴展,讓它成為人們能使用的、更好的工具。

00:09:51

那時候,我和 Korn shell 的作者 David Korn 私下進行了秘密爭論。POSIX 委員會,也就是規定了什麼是標準 UNIX 的委員會,他們也參與了進來,並說:「哦,很好,我們需要知道 shell 到底要包含些什麼。」而這方面最重要的兩個人是我和 David Korn。David Korn 已經寫了一個名為 KSH 的 shell。對於他所加入到 KSH 中的每一個功能,他都說:「這應該是一個標準功能。」是這樣嗎?對他來說這比起擁有最完美的 POSIX shell 要容易得多,如果這僅僅是他的 shell 的話。

00:10:31

其中的一些功能並不是很好的功能,不是很好的選擇,而且使得這款 shell 與 Bourne shell 有些不兼容,或者我覺得缺少功能,對此我們進行了一些討論和爭論,因此構建一個兼容 POSIX 的 shell 與過去為 Bourne shell 所編寫的每個 shell 腳本都完全兼容花了超過 3 個月時間。

00:10:54 - Saron Yitbarek

因此,如果你正在設計的產品不僅可以取代 Bourne shell,而且還試圖模仿 Bourne shell 的每個部分,聽起來你可能會遇到一些版權問題。你是如何處理的?

00:11:08 - Brian Fox

為了構建真正開源而自由的軟體,你必須得在一個乾淨的空間里,開始做這項工作。你不能從查看別人的代碼開始然後重新實現它。因此,我從未見過與任何貝爾的系統、UNIX 或者甚至 Berkeley UNIX 相關的任何軟體,也從未見過這些東西的源代碼。

00:11:29

當我開始構建 Bash shell 時,我使用了一個名為 Bison 的解析器,理查德已經將其整合到自由軟體基金會裡,並且與之前任何的其他程序完全不同。因此,我已經知道我所要構建的東西,絕對不會侵犯任何先前構建的東西的版權。

00:11:55 - Saron Yitbarek

創建 Bash 的工作有很多小插曲,對於那些硬核的代碼英雄來說,這只是其中一個例子。

00:12:03 - Brian Fox

有一次,我正致力於在 shell 中實現 通配擴展 globbing 。舉例來說,這是允許你匹配大量文件的通配符擴展。你可以給出 *.c,而這會匹配所有帶有 .c 擴展名的文件。

00:12:17

因此我在通配擴展上忙活了幾個小時,並且使其生效了,對此我感到很興奮。這是一個很好的實現。而在創建這一版實現的過程中,我在我的目錄里創建了一個名為 *.c 的文件,然後我想:「好吧,我應該刪掉這個文件」,然後我輸入了 RM、空格、引號、星號點 C、閉合引號,在現代 shell 中當你使用了括弧,這意味著「不要擴展這個」,然後我按下了回車,提示符過了很長時間才重新出現,因為我們正在使用 Sun 350s,運行緩慢。我意識到,之所以花了很長時間是因為它要刪除這個目錄里的所有源文件。

00:12:58 - Saron Yitbarek

哦,不!

00:12:59 - Brian Fox

是的。所以我當時刪掉了 Bash 的源代碼。

00:13:01 - Saron Yitbarek

哦,不要。

00:13:04 - Brian Fox

這 ——

00:13:05 - Saron Yitbarek

哦我的天哪,嗯。

00:13:06 - Brian Fox

這件事讓我笑了很久,笑的很大聲。我甚至沒有感到一絲沮喪。然後在接下來的幾天里,我重新輸入了全部。這份代碼在我腦海里是完全是嶄新的。

00:13:20 - Saron Yitbarek

哇。

00:13:20 - Brian Fox

問題解決了。只需將其記錄到文件中即可。

00:13:25 - Saron Yitbarek

好的。因此,大多數人會在那一刻完全驚慌失措。而你笑了,只是說:「哦,我想我必須重新做一遍了。」為什麼你當時那麼冷靜呢?

00:13:35 - Brian Fox

這讓我感到瘋狂很荒唐,也非常好笑,我正在打造這個工具,而要確保自己能搞好,確保該工具正常工作,你得在構建它的過程中就使用它。但是該工具無法正常工作。我還沒有實現引號,並且因為我還沒實現引號,所以我輸入的命令沒有按照我所預期的去執行,我覺得這真的很滑稽。

00:14:06 - Saron Yitbarek

太神奇了。

00:14:08

不過,甚至是關於錯誤的這個故事也能說明 Fox 的才華。他們說莫扎特在頭腦中完成了交響曲,然後只需要在完成後寫下來即可。Fox 也有類似的天賦。

00:14:23

因此,當你最終完成並交付 Bash 時,感覺如何呢?

00:14:27 - Brian Fox

呵,其實感覺很壯觀。那麼這裡有一個故事,其實我一般不講的。構建這款 shell 花了大約 8 個月的時候,當時我知道,我大概還需要大約一個月時間才能完成工作,然後另一個 shell 發布了 —— ASH,一個開源的 shell 被發布了,我很沮喪,因為我們還沒有向任何人發布 Bash shell,所以只有少數人在使用它。我知道這還需一個月的工作量,於是我想:「哦,這太糟糕了。我投入的全部能量和精力都不會得到讚許,甚至可能都不會被看見。」所以我非常沮喪。這次我沒有笑。

00:15:13 - Saron Yitbarek

然而,布丁好不好,吃了才知道。GNU 的 Bash 發佈於 1989 年並且變成了 Linux 的默認 shell。如今,它是計算機中不可或缺的一部分。

00:15:25

它無處不在。如此多的人每天都在使用它。它遍佈於每一台計算機上。作為 Bash 的作者感覺如何?

00:15:34 - Brian Fox

大多數時候,我甚至都沒有注意到 Bash 是比工具更加重要的東西。我真的沒有經常想這件事。每隔一段時間,我會走進一家蘋果商店,環顧四周然後想:「哇,這裡的每台計算機不僅運行著我 27 年前編寫的軟體,甚至上面還包含有我的名字。」然後我想:「互聯網上的每台計算機、每台伺服器都在運行著 Bash shell,並且其中包含有我的名字。」然後 Windows 在去年還是前年推出了 Power shell,就是 Bash,當時我想:「哦,天哪。我的名字遍及地球上的每台計算機了。」

00:16:21 - Saron Yitbarek

不過,我想讓你們能仔細聽聽 Fox 接下來告訴我的內容,因為它是很重要。他從未想過,它的程序會這樣統治全球。他試圖提供幫助,試圖幫助他所置身其中的編程文化。

00:16:37 - Brian Fox

我並沒有打算去實現出現在每個人的計算機上這樣的宏偉目標。我對此一點都不感興趣。我想製作一款有用的軟體,我希望它有典型的 3 到 5 年軟體壽命,而不是像現在這樣瘋狂的 30 年的壽命。

00:16:58 - Saron Yitbarek

難道你對於你在計算機領域有如此巨大影響力的事情,一直反應那麼平淡嗎?

00:17:06 - Brian Fox

我為自己寫了 Bash 而感到驕傲,而且它讓我意識到了我的價值,所以有時候我會做一些事情,諸如接受播客邀約談論 shell 之類的事情。

00:17:14 - Saron Yitbarek

非常感謝你。

00:17:15 - Brian Fox

謝謝。但這不是存在於我日常生活中的東西。幸運的是,我只是一個默默無聞的人,對吧?的確,我的軟體正運行在每家每戶的計算機上,不過也確實沒有人知道這一點,對吧?因此我保持了許多個人隱私,而這個 shell 以及某個住在聖芭芭拉的人編寫了它這一事實正越來越廣為人知,我開始在生活中越來越多地注意到它。人們有時候來看我演奏音樂,然後告訴我說:「你是寫了 shell 的那個傢伙。」我感覺有點兒像 Keanu Reeves。

00:17:54 - Saron Yitbarek

很酷。所以你說過你不指望 Bash 出現在每台計算機上。你打算做的是什麼呢?你對 Bash 有什麼期望?

00:18:04 - Brian Fox

一個有用的替代工具,成為 GNU 項目的一部分,並幫助創建這個自由的開源操作系統。我實際上以為一旦我們完成了該開源操作系統的創建,該系統上的軟體就可以升級,並且我將有機會創建自己想要創建的那種 shell,以幫助人們在某種程度上促進計算機科學的發展。

00:18:35 - Brian Fox

我最終意識到,Bash 被創建的原因實際上是與已經存在的 UNIX 世界向後兼容,並且這種勢頭使其保持了活力,這是另一個獨一無二的地位,你的工具如此基礎,幾乎是一副不可或缺的螺母和螺栓。

00:19:01 - Saron Yitbarek

確實是這樣。

00:19:01 - Brian Fox

知道我創造了世界上某種有價值的、別人仍然還在使用的東西,這真的是一種很棒的感覺。然後當我注意到這是怎麼回事時,我意識到,更重要的是,「自由軟體」和「開源」這些詞存在於日常英語和全世界的日常語言之中了,而最初並不是這樣的。這是我和理查德•斯托曼還有其他人所投入努力的產物。作為這一運動的一部分,我很幸運能這麼早參與,但讓我回過頭來看時,也感到非常滿意,我想:「哇,開源軟體已經存在,而且我就是其中的一部分。」

00:19:50 - Saron Yitbarek

Brian Fox 是 Bash shell 的創建者和 Opus Logica 的 CEO。

00:20:01 - Steve Bourne

事實上,我確實聽說過 Bash。

00:20:03 - Saron Yitbarek

這位就是被 Brian Fox 的工作所替代的 Bourne shell 的創建者 Steve Bourne。我們想知道 Bourne 對 Fox 的工作有何看法。他是否將重生的 shell Bash 視為自己作品的開源複製品?我的意思是,他覺得 Bash 怎麼樣?

00:20:20 - Steve Bourne

有一天,寫了 Bash 的那個人在一次會議上找我,給了我一件 T 恤,前面印著 「Bourne again」 的字樣。

00:20:26 - Saron Yitbarek

那就是 Brian Fox。

00:20:29 - Steve Bourne

那是一種友好的情緒,當時是:「好吧,希望您不介意,但我只是重寫了您的 shell」,而我說:「聽起來不錯」,然後他給了我一件 T 恤。

00:20:38 - Saron Yitbarek

如果我在編程領域學到了一件事,那就是每個人都喜歡意外之喜。事實證明,Stephen Bourne 認為 Bash 是他和其他人在貝爾實驗室所做工作的必要擴展。一點兒都不為此苦惱。

00:20:52 - Steve Bourne

曾經有一些人們想要,但是我沒做的特性,例如變數替換和字元串管理,但是這些都被加入到了 Bash 中,現如今人們經常會用到。Bash 和原始 shell 之間的關係,我當時的印象是,它只是對語言的重新實現,並且隨著時間的推移,它確實添加了功能,因此它確實取得了超越我所寫作品的進步,當然是在字元串管理領域。我現在一直在用它。

00:21:21 - Saron Yitbarek

Steve Bourne 是 Bourne shell 的創建者和 Rally Ventures 的 CTO。

00:21:32 - Saron Yitbarek

自從 Bash 在前往聖芭芭拉的長途車程中被塞進 Brian Fox 的卡車以來,已經過去了很多年。 2019 年,版本 5.0 被發布,就像 Fox 提到的那樣,Bash 現在被內置進了 Linux 中、macOS 中,甚至微軟 Windows 中。Bash 已經成了開源世界中腳本編寫的基石。這是我們自動化的基礎。

00:22:02 - Taz Brown

隨著組織規模的擴大,使用能夠使我們更快完成工作的工具變得至關重要。它成為了必需品。

00:22:16 - Saron Yitbarek

Taz Brown 是 Red Hat 的資深 Ansible 自動化顧問,因此她非常了解 Bash 的價值。

00:22:24 - Taz Brown

我絕對認為人們在職業生涯初期就應該使用 Bash。與其使用 GUI 或者說是圖形用戶界面,不如將自己視為管理員或 DevOps 人員。

00:22:39 - Saron Yitbarek

而這是因為作為一名 Bash 程序員,你將會掌握能讓你晉陞的核心價值。

00:22:45 - Taz Brown

學習寫腳本有一定的價值,因為這可以讓你從自動化的角度,為程序的長期運行做打算。你可以看到腳本的運行方式,然後可以說:「好吧,我可以做到,我可以使這項任務自動化執行。」它開始使你成為與之前不一樣的思想家和技術專家。

00:23:09 - Saron Yitbarek

對於運維而言,自動化已經變得不可或缺。複雜的程序、應用和工具均由優雅的 Bash 代碼實現。

00:23:21 - Taz Brown

如果你願意的話,你不必重複造輪子。你可以從 GitHub 庫或是其他任何你存儲這些特定文件的地方拉取它們。Bash 允許你這麼做。Bash 允許你執行這些常見任務,並且可以從 10 台伺服器擴展到 1000 台伺服器。

00:23:42

關於自動化的偉大之處在於,一旦你制定了計劃,就可以以一種非常有效的方式執行。它允許你執行那些,無法手動執行的操作。

00:23:56 - Saron Yitbarek

最近 Taz Brown 所從事開發的 Ansible® 這樣的最新產品可以始終與 Bash 集成在一起,完成了工作。

00:24:04 - Taz Brown

雖然時代在不停前進,但是我認為 Bash 永遠都會是管理員會去選擇使用的工具,特別是他們想要快速自動化的情況下。

00:24:14 - Saron Yitbarek

最後,這一切的成功,都可以追溯到它是一個自由的、允許所有人加以改進的軟體這件事上。它是 Brian Fox 提供給世界的,某種沒有許可證和限制的東西。滿足了人們一直的需求,所以是 Bash 成功的關鍵。實際上,他甚至已經不再主管 Bash 開發已經很長一段時間了。這位是 Chet Ramey,他維護了 Bash 數十年。

00:24:38 - Chet Ramey

我想,Brian 在發布 1.05 版本後就已經決定了他想要繼續去從事其他工作。他曾在自由軟體基金會負責過其他任務,他想做除了 Bash 以外的事情,而我是 Bash 最活躍的貢獻者。他和我一起開發了許多新功能。我們共同努力解決了許多 bug,因此當到了需要其他人接手時,我是最佳人選。

00:25:16 - Saron Yitbarek

就像 Fox 一樣,Ramey 也必須繼續努力,因為 Bash 比任何一位維護者都重要。

00:25:25 - Chet Ramey

我是從 23 歲開始貢獻的,有點兒像是我和 Bash 共同成長。在某些時刻,我會需要徵集一個團隊。我需要徵集那些願意並且有能力投入時間推動 shell 發展向前的人們。

00:25:46 - Saron Yitbarek

Bash,這款再次降生的 shell 明年將迎來 30 歲(LCTT 譯註:Bash 發佈於 1989 年,至本譯文發表時,已經 31 歲了),並且沒有衰老的跡象。Bash 乘著自由軟體浪潮,然後是開源浪潮,直到傳播至編程世界的每個角落。但曾經,它只是存儲在 Brian Fox 汽車後備箱里磁帶上的代碼。它只是一些程序員,想要帶給大家的 shell 語言。幾乎偶然的,Brian Fox 在此過程中成為了一名偉大的代碼英雄。

00:26:23

順便說一句,有些事情始終困擾著我, Brian Fox 驅車將所有 Bash 代碼載到了 Santa Barbara。為什麼要轉移呢?我的意思是,他在某家科技公司找到了新工作嗎?

00:26:34 - Brian Fox

我想要繼續我的音樂生涯,而我認為做到這一點的最佳去處就是氣溫總在 72 華氏度左右、天空沒有烏雲、海灘很美的地方。

00:26:45 - Saron Yitbarek

很好,我更喜歡這個理由。

00:26:49

現在讓我們向 Wayne A. Lee 致敬,是他向我們建議了這一集標題《Bash Shell 中的英雄》。幹得好,Wayne。

00:26:57

在下一集中,我們對於自動化的興趣,將提升到一個全新的高度,並且著眼於 AI 語言,特別是 John McCarthy 創造的 LISP。

00:27:11

《代碼英雄》是 Red Hat 的原創播客節目。如果你訪問節目的網站 redhat.com/commandlineheroes,你將更深入了解到有關 Bash 或是我們本季所介紹的任何編程語言的故事。

00:27:28 - Saron Yitbarek

我是 Saron Yitbarek。下棋之前,堅持編程。

什麼是 LCTT SIG 和 LCTT LCRH SIG

LCTT SIG 是 LCTT 特別興趣小組 Special Interest Group ,LCTT SIG 是針對特定領域、特定內容的翻譯小組,翻譯組成員將遵循 LCTT 流程和規範,參與翻譯,並獲得相應的獎勵。LCRH SIG 是 LCTT 聯合紅帽(Red Hat)發起的 SIG,當前專註任務是《代碼英雄》系列播客的腳本漢化,已有數十位貢獻者加入。敬請每周三、周五期待經過我們精心翻譯、校對和發布的譯文。

歡迎加入 LCRH SIG 一同參與貢獻,並領取紅帽(Red Hat)和我們聯合頒發的專屬貢獻者證書。

via: https://www.redhat.com/en/command-line-heroes/season-3/heroes-in-a-bash-shell

作者:Red Hat 選題:bestony 譯者:JonnieWayy 校對:acyanbird, wxy

本文由 LCRH 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國