Bashスクリプトを書くときにPOSIXに興味があるのはなぜですか? [閉鎖]

Bashスクリプトを書くときにPOSIXに興味があるのはなぜですか? [閉鎖]

この問題に対して再開できる提案/修正を探しています。これらの回答の多くは私にとって客観的に見え、正確に私が見つけたタイプの答えでした。


POSIXに関する4つの記事を読みましたが、答えが見つかりませんでした。今、POSIXが何であるかがわかりました。はい、私はすでに標準が何であるかを知っていますが、POSIX標準が今日でもなぜまだ関連しているのかわかりません。私が読んだ3つの記事の1つはリチャード・ストルマンとのインタビュー。その中で彼は言った。

セス:POSIX準拠のフリーソフトウェアプロジェクトを他のUnixシリーズシステムに移植するのは簡単ですか?

有効な値:そう思いましたが、1980年代に私はもはやソフトウェアをGNU以外のシステムに移植するのに時間を無駄にしたくないと決めました。 ...

セス:POSIXはソフトウェアの自由にとって重要ですか?

有効な値:基本的には違いはありません。しかし、標準化は私たちがフリーソフトウェアに向かってより速く進むのを助けます。これは1990年代初頭に達成された。...[強調私のもの]

彼の答えはGNUの観点から染まっていましたが、「POSIXはもはや関連していませんか?」という私の質問に答えているようです。

まず、私がこの部分に興味を持っている理由をより具体的に説明すると、次のようになります。この回答では、プロセスリダイレクトを使用することをお勧めします<(command)。応答は次のとおりです。残念ながら、プロセスリダイレクトはPOSIX機能ではないため、すべてのシステムがそれをサポートしているわけではありません。

スクリプトが#!/bin/bashウィキペディアによると、bashは「ほとんどのLinuxディストリビューションでデフォルトのログインシェルとして使用されました。」

しかし、この記事は言う「現在、Linuxは高コストのため、2つの商用LinuxディストリビューションであるInspur K-UX [12]とHuawei EulerOS [6]を除いてPOSIX認証を受けていませんでした。 。

だから私は考えるPOSIXの目標は移植性ですが、少なくとも私の経験では、私のスクリプトは次のとおりです。もっとbashで動作し、POSIXを無視すると移植可能です。逆の場合ではありません。

私の質問をもう一度申し上げると、なぜ作者はPOSIXコンプライアンスに集中するのに時間を費やす必要がありますか?

ベストアンサー1

たぶん気にする必要はありません。知るPOSIX機能だけでなく、特定のシェルのみを使用します。

ただし、最終的に他のものを使用する可能性がまだあります。この場合、非標準機能について知っておくと便利です。おそらくあなたは一生の間Linuxで働いてきましたが、新しい$ DAYJOBを使用すると、まったく異なるシステムのシェルに入ります。

しかし、これが単にLinuxではないシステムであるという意味ではありません。組み込み/小型システムにはBusyboxのみがあり、デフォルトのashシェルはBashよりも通常のPOSIX shに近いです。 (Busyboxにはhush私がよく知らない別のシェルがあります。またこれがBashクローンであると疑われます。とにかく、小規模なシステムでは一般的に小さなシェルが必要です。これはおそらく機能が少ないことを意味する可能性があります。) (そしてUbuntu)彼らも非常に懸念していた。 Bashは非常に遅く、systemdが登場する前にシステムの起動にシェルスクリプトが多く使われていたので、デフォルトを別のAshベースのシェルであるDash/bin/shに。 (例えばLWN関連記事そしてダッシュUbuntu Wikiから。 )

場合によっては、機能が同じであるため、POSIX 操作を実行するのに費用はかかりません。私が考えることができるのは、[ a = b ]代わりに使用する[ a == b ]i=$((i + 1))、代わりに使用するのと同じ単純なものだけであることを認めます((i++))。とにかくそのような状況が存在します。特別な特典なしで使用するの==が一般的なようです。 ([[ .. ]]vs。[ .. ]は少し異なりますが、実際には違いがあります。)

これは、ローカル変数、配列、プロセス置換、文字列置換、およびスライス拡張を絶対に使用しないでください。むしろそうだと思います。非常に必要なときに便利です。世界中のすべてのシェルで機能していないことに気づくのは役立ちます。またはさらに悪いことは、同じように動作しないということです。

unix.SEへの回答を考えると、Webサイトのタイトルは「Unix&Linux」と呼ばれ、代わりにunix.stackexchange.comそう呼ばれることに注意してくださいlinux.stackexchange.com。したがって、Linux以外のシステムを念頭に置くことはある程度関連しています。そして私の考えでは、多くの長いユーザーがそれほど賢いと思います。 ;)

POSIXチェーンを離れてBashに依存したい場合は、zshの使用を検討することもできます。 POSIXとの互換性がはるかに低下するため、実際には多くの点でより健全になります。

おすすめ記事