シェルスクリプトの「#!」コレ、実はshebang(シェバング)って名前があるんです

  • シェルスクリプトの「#!」コレ、実はshebang(シェバング)って名前があるんです はコメントを受け付けていません
シェバングについて

こちらの記事でも話題にしましたが、最近『bash』の問題で騒がれていますが、こんなご時勢だからこそのシェル関連記事を書こうかなと思います。

ということで、先日先輩(経験20年クラス)のエンジニアとの何気ない会話の中で話題にのぼったのですが、意外と知らない人が多いようなのでメモメモ。

あなたはシェバングって知っていますか?

shebang(シェバング)

shebang

シェルスクリプトを書く人なら誰しもが書いた経験のある、1行目の「#!」のことです。
読み方には「シバン」や「シェバン」という場合もあるのですが、私は一番しっくりくるシェバングと呼んでいます。
(英語が苦手な私としては、覚えるためにはフィーリングって大事なのです)
また、このシェバングから始まる行をシェバング行といったりするようですが、私はそれも含めシェバングと呼んでいます。

シェバングの用途

そのスクリプト(処理)を読み込むインタプリタを指定しています。

例としては、

#!/bin/csh  ⇒  Cシェルを起動
#!/bin/bash  ⇒  bashを起動
#!/usr/bin/perl  ⇒  perlを起動

というふうになります。

※注意
cshやbashなどは、大抵「/bin」配下に格納されているので何も考えなくていいですが、perlやruby・phpなど他の言語は環境によって格納先が異なる場合があります。そういった場合は、「which」コマンドや「whereis」コマンドを使用してパス(格納場所)を調べてください。

【例】phpのパスをwhichコマンドで調べる

# which php
⇒ /usr/bin/php のように表示されます。

【例】phpのパスをwhereisコマンドで調べる

# whereis php
⇒ php: /usr/bin/php /etc/php.d /etc/php.ini /usr/lib/php /usr/share/php /usr/share/man/man1/php.1.gz のように表示されます。

■whichとwhereisの違い
whichコマンドでは、パスを表示しますが、whereisコマンドでは、パスに加えソースファイル及びmanページのパスを表示します。

ジェバングにはコマンドも書けるのです・・・が

前述したように、基本的にはシェバングにはインタプリタの指定を記載しますが、実はシェバングにはコマンドを記載することも可能です。
まあそれが何の役に立つのかという話は置いといてですね・・・。
(どなたか有効な使い方を知っていたら教えてください。)

シェバングについて解説している書籍って少ないですよね!?

シェバングについては、Linuxやシェルスクリプトの本でも記載されている情報は少ないな~(っていうか記載がほとんど無いような…)って印象を受けました。
まあ知らなくても感覚で何とかなるものではありますが、知っているけど使わないことと知らないから使えないことは全然違いますので、今回の情報が役に立つその時まで頭の片隅にでも置いといていください(笑)

  • このエントリーをはてなブックマークに追加

関連記事

コメントは利用できません。

ページ上部へ戻る