ディスカッション (5件)
「POSIX」という言葉をシェルと混同しているエンジニアが非常に多いですが、実はこれは明確に違います。POSIX(Portable Operating System Interface)は、OSが提供すべきインターフェースを定義した『規格』であって、特定のプログラムやシェルそのものを指すわけではありません。シェルスクリプトを書く際に『POSIX準拠』という言葉を使いますが、これはあくまでPOSIX規格に定められたPOSIXシェル(通常は/bin/shとして実装されているもの)の仕様に準拠していることを意味しています。BashやZshはあくまでPOSIXシェルの上位互換的な拡張を持つ実装であり、POSIXそのものではないという点はしっかり押さえておきましょう。
かなり筋の悪い議論だね。POSIXで定義されていないなら、特定の動作に依存している時点でPOSIX互換とは言えないでしょ。定義された動作だけを使っていて動くなら、それは互換性があると言える。C99はコンパイラじゃないって言ってるようなもんだよ。確かにそうだけど、それでもC99のコードは書けるだろ?
この記事はいいね。筆者がまずシンプルな例を使って問題を説明し、次のセクションでその考察を少し述べてから、サラッと自作ツールを2つ紹介している。これこそ最高だと思う。問題を解決するためのツールを提示しつつ、その重要性を明確にしているわけだしね。コードの移植性をテストするには、彼らのツールを使うのが一番だよ。
Dockerなしではビルドできないから、自分には縁がないな。一部のLinux環境ですらポータブルじゃないって言ってるようなもんだろ。
もしPOSIX環境なら、shellspec[1] みたいにPOSIXシェルで書かれたツールを使ってスクリプトをテストするのも一つの手かもしれないよ。