Qiita
ShellScript
POSIX

品位が問われるAdvent Calendar ― シェルスクリプトはどこでも動く!

More than 1 year has passed since last update.

やってきました、Advent Calendar 2016。ここ数年毎年参加してきたので、よし「今年も」と思ったのですが……

脳内の本音を喋る回路とTwitterを直結している人

Twitter上にこういう発言をしている人がいました。

  • "シェルスクリプトはどこでも動くと言ったな、あれは嘘だ"
  • "echoコマンド一つでも、/bin/echoかシェルの組み込みコマンドかを意識しないといけないの、はっきり言って現代人のやることじゃない"
  • "シェルスクリプトのプロジェクトに「curlが無いときは?」「whichコマンドが無いときは?」という性格の悪いプルリクを投げるの好き。"

まぁ、もう誰とは言いませんけどね。1

ここには反論を書くことにしました

誰とは言いませんが、このAdvent Calendarの関係者の発言とだけは言っておきます。で、こうして品位を欠いた状態の場所にまともな話題を書いても不毛ですので、冒頭で取り上げたツイートに対する反論とその理由を書くだけにしようと思います。

シェルスクリプトがどこでも動くというのは嘘じゃない

さて、冒頭のツイートに真っ向から反論します。

「シェルスクリプトはどこでも動く」というのは、今年ついに現実になったのです。

Bash on Ubuntu on Windowsが今年、革命をもたらした

どういうことでしょう?鍵はBash on Ubuntu on Windows(Windows Subsystem for Linux)の登場です。

ご存じのとおり今年の8月2日、Windows 10 Anniversary Updateがリリースされました。これにはBash on Ubuntu on Windowsというコンポーネントが追加され、Windowsに今までとは比べ物にならないほど本格的なLinux環境、つまりPOSIX的な環境がもたらされたのです。

Windowsといえば、2016年現在PC市場でシェア9割を誇るOSです。そして残り1割がMacとUNIX系OSでぼぼ占められています2。今出荷されているWindows PCのバージョンはほぼWindows 10ですから、出荷ベースでみれればシェルスクリプトはPCのほぼ100%で動くようになったのです。確かにまだ「PCの出荷ベースで見れば」という条件が外せませんが、Windowsのライフサイクル(サポート期限)を鑑みればその条件が外れるのも時間の問題です。

これによりシェルスクリプトが動くOSはほぼ100%ということになりました。あとはシェルスクリプトの互換性が確保できればよいわけすが、そのための開発指針こそ、我々が研究・提唱しているPOSIX原理主義です(外のAdvent Calendarで詳しくやってます)。一言で言えば、シェルスクリプトの共通語を覚えるということ。一部の環境でしか通用しない文法やコマンド、オプション等を、それが方言であると知らずに使うからよそで動かないだけで、きちんと知ればいいのです3

きちんと知れば、こうしてシェルスクリプト製Twitterクライアントだって作れます。Bash on Ubuntu on Windows、OS X、CentOS、Ubuntu、Raspbian、AIX、それにCygwinで動くことを確認しました3

ついにOSの壁を越えるプログラムが書ける時代がやってきたということで、今年はコンピューター史に残る革命的な年なのです。

以上


  1. すっかり炎上して有名になったし、もはやここに書く必要もない。 

  2. Windowsが全バージョンでシェア増加 - 10月OSシェア | マイナビニュース 

  3. もっと色々な環境(現役でサポートされているOS)で動くはずなので試してみたい。