通信用語の基礎知識 全国のICカードこれひとつ 戻る

shebang
辞書:電算用語の基礎知識 プログラミング仕様編 (PTPROGS)
読み:シバン
外語:shebang: shell-bang
品詞:名詞

UNIXスクリプトの先頭に書かれる、#! から始まる行のこと。

目次
概要

この行で、そのスクリプトを処理するインタープリターフルパスを指定する。

「#!/bin/sh」や「#!/usr/bin/perl」といったものがよく見られる。

特徴
#!がないとき

スクリプトファイルは、中にスクリプトを記載したソースファイルではあるが、同時に単なるテクストファイルでもある。

単なるソースファイルに実行権限を付けて実行しても、何もなければ行頭から1行ずつ順番に実行するだけの、ただの「コマンドの羅列」となる。

それで充分なこともあるが、それは単なるバッチファイルとしての動作であり、スクリプトファイルとしては機能していない。

#!の動作

1行目に「#!」を書くと、そのファイル自身を、指定されたインタープリターに与えて実行したことと同じ動作となる。この時のインタープリターの名前はフルパスで書かねばならない。

Linuxで一般的なbashを使ったbashスクリプトの場合は、次のようになる。

#!/bin/bash

フルパスは、whichコマンドなどで出てくる。(例: which bash)

スクリプトファイルをスクリプトファイルとして用いるためには、1行目に「#!」が必須ということになる。

#!の重要性

ファイル内に記述されたコマンドの羅列の実行機能だけであれば、1行目に「#!」がなくても一応は動く。ただしこの場合、ファイル内容であるコマンドの羅列が標準のシェルに送信され順次実行されるのみとなり、psコマンドやtopコマンド等で見ても、表示されるのはそのシェルの名前だけで、実行しているシェルの特定が困難となる。

一方、1行目に「#!」を書くと、1行目で指定されたシェルにファイルが渡されるため、psコマンドやtopコマンド等では、シェルの名前と、シェルスクリプトのファイル名の双方が表示される。実行中のプロセスなどもわかりやすくなる。

補足
リンク
関連する用語
シェルスクリプト

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic