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 |