私はBash組み込みコマンドを使用するBashスクリプトの移植性について疑問に思っています。Darwin/MacOSはBashを変更しますか?
私は、UNIXの各味がさまざまなUNIXユーティリティを変更する傾向があることを理解します。しかし、彼らはBashとBashの組み込み機能だけを残す傾向がありますか?特にMacOSはどうですか?
私はBash組み込みコマンドを使用するBashスクリプトの移植性について疑問に思っています。Darwin/MacOSはBashを変更しますか?
私は、UNIXの各味がさまざまなUNIXユーティリティを変更する傾向があることを理解します。しかし、彼らはBashとBashの組み込み機能だけを残す傾向がありますか?特にMacOSはどうですか?
Appleは、GPL3でライセンスされているコードを出荷していないので、かなり古いバージョンのBashを使用しています。現在のバージョンfrom Apple's open source siteをダウンロードし、少なくともバニラBash 3.2であることを確認してください(Xcodeプロジェクトが追加されていることは明らかですが)。
ダーウィン開発者からのメモが見つからないようですので、おそらく在庫です。私は確かに知っている明確な方法があったと思います。 –
私が知っている限り、bashはMac OS X上で変更されていません(コンパイルには少し微調整が必要ですが、ソースはhttp://opensource.apple.com/で確認できます)。スクリプトは移植性が高いはずです。
グレアム・リーとして&ゴードン・デイヴィソンは、Mac OS Xには古いバージョンが同梱されており、サポートされているバージョンに違いがあることを指摘しています。 Bash 4には連想配列があり、other changesです。 Bash 3には、正規表現のマッチングが含まれています(おそらく、検索していないものもあります)。 Bash 2の違い、おそらくブラケット/条件付きのテストの違いを覚えていないでしょうか?
Mac OS X 10.7.x LionにはBash 3.2.xが含まれています。私は頭の上から正確なバージョンを思い出しませんが、Mac OS X 10.6.x Snow Leopard & 10.5.x LeopardにはBash 3.xが含まれています。 Mac OS X 10.4.x Tiger以前はBash 2.0.5を使用していました。だから、あなたは間違いなくデフォルトでサポートされているものの違いにぶつかるでしょう。
もちろん、Mac OS X上の異なるbash
バージョンの機能セット&ビルトインの違い以外に、他のツールの違いもあります。たとえば、Mac OS Xにはgetopt
の問題があります(スペースはMac OS Xのディレクトリ/ファイルパスで頻繁に見つかっていますが、引数ではサポートされていません)。bash
の新バージョンのgetopts
がこれに役立ちますが、古いバージョンで利用可能)。当然のことながら、異なる機能や構文を持つツールもあります。
私は間違いなく専門家bash
の開発者ですが、のさまざまなリリースをサポートするMac OS X固有のスクリプトを書いています。 2.xと3.xの正規表現の機能と回避策については、Regular Expressions in Bash and Alternativesの記事を参照してください。 Mac OS Xを重視する私のbash
スクリプトの一部:tools-osx & bash_stub。
これはどのようにして質問に答えますか? – hek2mgl
どのようにして質問に答えませんか?私は、bashが変更されているかどうか、およびOS Xリリースに含まれているバージョンが異なるために、残りの部分が組み込みステートメントの移植性を扱っているかどうかについてのオープニング声明を明確にしました。 – morgant
ねえ!これをもう一度読んだ後、私はあなたが正しいことを認めます! ...これは確かにここで最高の答えです。私はそのコメントを投稿するために私に動かされたものはもうわかりませんが、誰かがそれにリンクしていると思いますが、間違ったコンテキストで、私はそのコンテキストに対して論争していました...申し訳ありません! :) – hek2mgl
bashバージョン4は、DarwinまたはMacOS Lionでは出荷されていません。 ですから、macはreadコマンドの改良などをサポートしていません。これは残念です。
cygwinにはbashがあります。4.1.10
だと思います。 Bashは長い間存在してきましたが、この時点では非常に安定しており、新しい機能を追加していません。だから、なぜ誰かがそれを混乱させるでしょうか? – ControlAltDel
@ControlAltDel:実際には、OS Xのバージョン(3.2)にはないbash v4.0(例:結合配列)にいくつかの重要な機能が追加されました。 –
私は訂正されました:) – ControlAltDel