通常、シェルスクリプトには、スクリプトファイルの最初の行に次のコメントが含まれています#!/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/sh
Bourneシェルはもはやメンテナンスされなくなり、通常はリンクです。多くのUnixシステムではへ/bin/sh
のリンクになり/bin/ksh
、/bin/ash
多くのRHELベースのLinuxシステムではへのリンクになり/bin/bash
ますが、Ubuntuや多くのDebianベースのシステムではへのリンクになります/bin/dash
。として呼び出されると、すべてのシェルはsh
POSIX互換モードに入ります。
hashbangは、スクリプトが厳密にPOSIXに準拠している限り(重要性を強調するために繰り返される)他の方法よりも移植性が高いため、重要なプレースホルダーです。
注:POSIXモードで呼び出されると、配列などのbash
POSIX以外の一部のアイテムはまだ許可されています。[[
これらの操作は、bash
システムでないと失敗する可能性があります。