Bourne Shellがディストリビューションで利用できない場合は、hashbangで/ bin / shを使用するのは正しいですか?

Bourne Shellがディストリビューションで利用できない場合は、hashbangで/ bin / shを使用するのは正しいですか?

通常、シェルスクリプトには、スクリプトファイルの最初の行に次のコメントが含まれています#!/bin/sh。私の研究によると、これは「ハッシュバン」と呼ばれ、定期的なコメントです。このコメントは、ファイルがディレクトリのBourne Shellによって実行されることをUnixに伝えます/bin

それから私の問題が始まりました。今までそのようなコメントは見たことがありません#!/bin/bash。いつも#!/bin/sh。しかし、UbuntuディストリビューションにBourne Shellプログラムはありません。 Bourne Again Shell(bash)があります。

#!/bin/shそれでは、Ubuntuディストリビューション用に書かれたシェルスクリプトにコメントを入れるのは正しいですか?

ベストアンサー1

#!/bin/shすべてのUnixおよびUnixファミリーディストリビューションで動作する必要があります。スクリプトがPOSIX仕様に準拠している限り、通常は最も移植性の高いハッシュバンと見なされます。シェルは、シェルとして偽装する実際のシェルに/bin/sh関係なく、POSIXシェル標準を実装するシェルでなければなりません。/bin/sh


#!/bin/shBourneシェルはもはやメンテナンスされなくなり、通常はリンクです。多くのUnixシステムではへ/bin/shのリンクになり/bin/ksh/bin/ash多くのRHELベースのLinuxシステムではへのリンクになり/bin/bashますが、Ubuntuや多くのDebianベースのシステムではへのリンクになります/bin/dash。として呼び出されると、すべてのシェルはshPOSIX互換モードに入ります。

hashbangは、スクリプトが厳密にPOSIXに準拠している限り(重要性を強調するために繰り返される)他の方法よりも移植性が高いため、重要なプレースホルダーです。

注:POSIXモードで呼び出されると、配列などのbashPOSIX以外の一部のアイテムはまだ許可されています。[[これらの操作は、bashシステムでないと失敗する可能性があります。

おすすめ記事