Bash スクリプトと Bourne スクリプトのどちらを作成する方がよいでしょうか? 私のチームは Bourne スクリプトを書いていますが、その理由は完全にはわかりません。
これが聖戦に関する質問 (例: vim と emacs) である場合は、聖戦とだけ答えてください。
特定の Unix コンピュータに Bourne シェルがインストールされることをより確実にすることができます。ええ、Bash は Linux ではどこにでもありますが、全世界が Linux ではありません。
ターゲットプラットフォームが何であるかによって異なります。
たとえば、主要な Linux ディストリビューションと Mac OS X のみをターゲットにしている場合は、これらのシステムで bash が利用できると確信できます。他の UNIX (AIX、Solaris、HP-UX など) では、bash が必ずしも存在するとは限らないため、Bourne を選択する方が安全です。もし bash が利用できるなら、あなたが Bourne を好む理由は思い浮かびません。
最も重要なことは、一部の Linux ディストリビューションのように、すべての OS が /bin/sh を /bin/bash にソフトリンクするわけではないことを覚えておくことです。多くのスクリプトが bash 用に作成されていますが、最初は次のようになります。
#!/bin/sh
たとえば、Ubuntuで壊れるようにします。したがって、bash スクリプトを作成するときは、常に次のように記述します。
#!/bin/bash
まあ、好みの問題ですが、まず Bourne シェル スクリプトは bash で実行できます。bash には Bourne では実行できない機能があると思います。
私はログイン シェルとして Bash を使用していますが、スクリプト作成には Bourne シェルを選択し、毎週日曜日に 2 回使用しています。Bash には、より優れた機能、使いやすさ、およびより優れたバグがあります。
実際、ログイン時に Bash を選択するのと同じ理由で、スクリプト作成時に Bash を使用しないようにしています。Bash は、すべてをユーザーにとって使いやすいものにしようとしますが、Bourne シェルの 140 kB と比較して、(私のマシンでは) 776 kB の実行可能ファイルが犠牲になります。私のスクリプトがユーザーの使いやすさを気にするのはなぜですか? 巧妙な Bash 関数を使用して得られる利益は、5 倍以上のシェル フットプリントによって事実上相殺されます。
Linux、FreeBSD、OS X を実行しているコンピューターがあります。コンピューター間で何かを移動することはめったにありませんが、可能性があることは素晴らしいことです。Bourne シェル スクリプトでは、次のように入力するだけです。
#!/bin/sh
そしてそれはうまくいきます。いつも。Linux では Bash が一般的かもしれませんが、Bourne シェルほど標準化されていません。FreeBSD では、デフォルトで Bash はインストールされません。システム管理者がそれを良いと判断した場合は Ports からインストールできますが、それでも最終的には/usr/local/bin/bash ( /bin/bashではありません) になります。したがって、それでも Bash を使用することにした場合は、
#!/usr/bin/env bash
スクリプトを移植可能にします。env
Unix のフレーバーに関係なく (インストールされている限り)、シェルが検索されます。
結局のところ、それはあなたの選択です。スクリプトが実際に選択したシェルに準拠していることを確認してください。「sh」が「bash」などにシンボリックリンクされていることに依存していません。
Mac OS X では /bin/sh は Bourne シェルではありません。(しかし、新鮮な肉で真のバーネッシュを手に入れることができます)。
従来の Bourne シェルを識別するには、| の代わりにサーカムフレックス ^ (キャレット) を使用してみてください。(パイプ)。
見る:
伝統的なボーンシェルファミリー、
携帯性。よっぽど辛くならない限り書き#!/bin/sh
、それから書き#!/bin/bash
ます。世界は非常に急速に変化しており、将来的には、システム管理者に bash をインストールするよう説得するのは簡単になるだろうと私は確信しています。しかし、私はほとんどのものにボーンを使用することで賭けをヘッジします。これは簡単です。
ボーン シェルは UNIX の実装によって若干異なる可能性があるため、ボーン アゲイン シェルを使用します。いつでも安心してお使いbash
いただけます。bash
bash