シェルスクリプトって1行目に
#!/bin/sh
と書くものだと勝手に思ってたけど、最近自分が書いているシェルスクリプトを見てみると1行目には何も書いてない・・・・
それどころか、今日出たエラーでは1行目に上の呪文とは関係ない#から始まるコメントを入れてしまったせいで Command not found. とか出てきた・・・
そこでシェルスクリプトの1行目の意味を調べてみた
シェルスクリプトの1行目で"#!"が指定されている場合は特別な意味を持ち、
指定したシェルやプログラムで動作させることを意味します。
一般的には、以下の様な指定が使われます。
#!/bin/sh Borne shellでスクリプトを処理
#!/bin/csh C shellでスクリプトを処理
#!/usr/bin/perl perlでスクリプトを処理
尚、この指定が無い場合、シェルスクリプトはカレントのシェルで処理します。
この為、カレントシェルがBorneシェルで、先頭に"#!/bin/csh"が記述されて
いないCシェルスクリプトを起動すると構文エラーとなる可能性があります。
シバン(Shebang)というらしい
指定したシェルやプログラムで動作させることを意味します。
一般的には、以下の様な指定が使われます。
#!/bin/sh Borne shellでスクリプトを処理
#!/bin/csh C shellでスクリプトを処理
#!/usr/bin/perl perlでスクリプトを処理
尚、この指定が無い場合、シェルスクリプトはカレントのシェルで処理します。
この為、カレントシェルがBorneシェルで、先頭に"#!/bin/csh"が記述されて
いないCシェルスクリプトを起動すると構文エラーとなる可能性があります。
参考
shの場合は上のようにすれば良い
が、pythonとかrubyとかだと置き場所が/bin以下でないことがある(らしい)
そこで次のような書き方をして、置き場所を明示的に示さない方法もあるらしい
#!/usr/bin/env python
ランキング参加中です
↓クリックしていただけると嬉しいです〜