blog

日常・技術のことを記録する

シバンは誰が読みとってくれてるの

普段、シェルスクリプト書くときは先頭行に

#!/bin/sh

ってつけなさい、と言われるじゃん。

この先頭行の話、なんとなく知ってはいたこととして
・名称は「シバン」という
・プログラムの先頭行に書かなければいけない
・書くと、「当プログラムはこのパスから実行します」みたいな感じで、なんや知らんがいいかんじでやってくれるらしい
くらいの認識だった。

このシバンを読み取ってくれるのは誰なんだろう?って不思議だったんだけど、オライリー社の詳解シェルスクリプト読んでたら書いてあった。

ファイルの先頭2文字が#!だった場合、カーネルが先頭行の残りの部分に入力されている文字列をインタプリタのプログラムへのパス名であるとみなしてくれるらしい。
(途中に空白があっても無視してくれる、とのこと。賢いな。)

カーネル機構の機能なのね。
だからpythonプログラムでもなんでもシバンを書いたら読み取ってくれるのか。
はえ~、便利だなあφ(・