2012-05-02 7 views
4

私はBash組み込みコマンドを使用するBashスクリプトの移植性について疑問に思っています。Darwin/MacOSはBashを変更しますか?

私は、UNIXの各味がさまざまなUNIXユーティリティを変更する傾向があることを理解します。しかし、彼らはBashとBashの組み込み機能だけを残す傾向がありますか?特にMacOSはどうですか?

+0

だと思います。 Bashは長い間存在してきましたが、この時点では非常に安定しており、新しい機能を追加していません。だから、なぜ誰かがそれを混乱させるでしょうか? – ControlAltDel

+1

@ControlAltDel:実際には、OS Xのバージョン(3.2)にはないbash v4.0(例:結合配列)にいくつかの重要な機能が追加されました。 –

+0

私は訂正されました:) – ControlAltDel

答えて

3

Appleは、GPL3でライセンスされているコードを出荷していないので、かなり古いバージョンのBashを使用しています。現在のバージョンfrom Apple's open source siteをダウンロードし、少なくともバニラBash 3.2であることを確認してください(Xcodeプロジェクトが追加されていることは明らかですが)。

+0

ダーウィン開発者からのメモが見つからないようですので、おそらく在庫です。私は確かに知っている明確な方法があったと思います。 –

3

私が知っている限り、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

+0

これはどのようにして質問に答えますか? – hek2mgl

+0

どのようにして質問に答えませんか?私は、bashが変更されているかどうか、およびOS Xリリースに含まれているバージョンが異なるために、残りの部分が組み込みステートメントの移植性を扱っているかどうかについてのオープニング声明を明確にしました。 – morgant

+0

ねえ!これをもう一度読んだ後、私はあなたが正しいことを認めます! ...これは確かにここで最高の答えです。私はそのコメントを投稿するために私に動かされたものはもうわかりませんが、誰かがそれにリンクしていると思いますが、間違ったコンテキストで、私はそのコンテキストに対して論争していました...申し訳ありません! :) – hek2mgl

0

bashバージョン4は、DarwinまたはMacOS Lionでは出荷されていません。 ですから、macはreadコマンドの改良などをサポートしていません。これは残念です。

cygwinにはbashがあります。4.1.10

+0

これはどのようにして質問に答えますか? – hek2mgl

+0

質問者がbashとMacOSについて質問しました。 アップルが最新バージョンのbashを使用するのを待っていないでください。 – vwvan

+0

、2017年3月5日現在、Appleは出荷中です GNU bash、バージョン3.2.57(1)-release(x86_64-apple-darwin16) 著作権(C)2007フリーソフトウェア財団 基本的に10年遅れています。 – vwvan

関連する問題