0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

シバン(shebang, #!)の有無と挙動

Posted at

シバン(shebang, #!)の有無と挙動

シェルスクリプトにおいて、シバン(shebang, #!)が無いときの挙動について説明します。

シバンはスクリプトの冒頭に記載される特殊な文字列で、スクリプトを実行する際にどのインタプリタを使用するかを指定します。例えば、以下のように記載します:

#!/bin/bash

これは、スクリプトを /bin/bash というバッシュシェルで実行するよう指示しています。

シバンが無い場合の挙動は以下のようになります:

  1. 明示的なインタプリタ指定:シェルスクリプトを実行する際に、明示的にインタプリタを指定して実行した場合、指定されたインタプリタが使用されます。

    bash script.sh
    

    この場合、script.sh にシバンが無くても、bash インタプリタが使用されます。

  2. 直接実行した場合:シバンが無く、スクリプトファイルを直接実行した場合、デフォルトのシェルが使用されます。多くのシステムでは、デフォルトのシェルは /bin/sh です。

    ./script.sh
    

    この場合、/bin/sh がデフォルトで使用されますが、システムによっては異なる場合もあります。たとえば、/bin/shbash にリンクされていることもあります。

  3. エラーハンドリング:スクリプトがシェルの構文に依存している場合、意図しないインタプリタで実行されるとエラーが発生する可能性があります。たとえば、bash 固有の構文を含むスクリプトが sh で実行されると、エラーが発生することがあります。

シバンを指定することは、スクリプトがどのシェルで実行されるべきかを明確にするための良い習慣です。これにより、スクリプトの移植性が向上し、予期しない挙動を防ぐことができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?