web-dev-qa-db-ja.com

Linux v.s Mac OSのBash

IMacを購入しています。私はLinuxに長い間取り組んでおり、一連のbashスクリプトを作成しています。 Mac OSですべてのbashコマンドと機能が利用できるかどうか疑問に思っていましたか?誰でもMac bashスクリプトの経験がありますか?私はあなたの入力に感謝します。

29
alex

Bash自体はほとんど同じです。いくつかの 小さな違い がありますが、これらのどれもスクリプトの移植性に影響を与えません。

主な問題は、MacOS coreutilsがFreeBSDベースであることですが、これまで使用していたユーティリティはGNUプロジェクトからのものである可能性が高いです。FreeBSDcoreutilsは常にGNU coreutils。GNUとFreeBSDバージョンの sedgreppsその他ユーティリティ

GNU coreutilsをインストールできますが、g-接頭辞(例:gcat for cat)。 MacOS coreutilsをGNU coreutilsに置き換えることは 良い考えではありません です。

32
user26112

問題がある場合でも、Mac OS X Mountain Lionのbashはバージョン3.2のままです。最近のほとんどのLinuxディストリビューションは4.xで出荷されているため、バージョン4の機能がありません。現在、バージョン4.2.45は回避策としてHomebrewから入手できます。 Mavericksのバージョンがわからないので、知っている人が言ってもよいかどうかはまだわかりません。

他の人が述べたように、bashbashと同じです(既に言及したバージョンを除く)が、Mac OS Xは(ほとんど)BSDユーザーランドを使用しています。標準システムユーティリティの多くは、オプションがわずかに異なるか、動作がわずかに異なります。残念ながら、数が多すぎてここにリストできません。

5
bahamat

homebrew (パッケージマネージャ)をインストールしてから、いくつかの基本ユーティリティのgnuバージョンをインストールします。

$ brew install coreutils
$ brew install gnu-sed

インストールのたびに、たとえばdateの代わりにgdateを呼び出すだけで実行できる手順が表示されるため、Linux bashスクリプトを変更せずに引き続き使用できます。

おめでとうございます。クロスプラットフォームスクリプトの問題の99%を解決しました。

4
Dean

LinuxからMacへの移行にイライラすることがあるのは、/proc疑似ファイルシステムがないことです。これは私のLinuxスクリプトの多くを壊しました、そしてprocで見つけたのと同じ情報をMac bashスクリプトに取り込む適切な方法を見つけるのは難しいかもしれません。

2
Chris Gregg

私は「主にLinux、たまにMac」のユーザーですが、次のように感じています。

bash、~/.bashrcおよび~/.bash_aliasesはほとんど同じように機能します。

私が見つけた1つの問題は、カラープロンプトを変更するコマンドの1つがMacで機能しないことでした。そのことや他の経験から、.bashrcファイルを設定するときにターミナルウィンドウを開いたままログインする方法を学びました。つまり、「新しいウィンドウ」をテストして、まだログインしているウィンドウでエラーを見つけることができました。

0
Michael Durrant