Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【シェルスクリプト】1行目に関するメモ

シェルスクリプトって1行目に

と書くものだと勝手に思ってた

けど、最近自分が書いているシェルスクリプトを見てみると1行目には何も書いてない・・・・


それどころか、今日出たエラーでは1行目に上の呪文とは関係ない#から始まるコメントを入れてしまったせいで Command not found. とか出てきた・・・

そこでシェルスクリプトの1行目の意味を調べてみた



シェルスクリプトの1行目で"#!"が指定されている場合は特別な意味を持ち、
     指定したシェルやプログラムで動作させることを意味します。
     一般的には、以下の様な指定が使われます。
      #!/bin/sh     Borne shellでスクリプトを処理
      #!/bin/csh     C shellでスクリプトを処理
      #!/usr/bin/perl  perlスクリプトを処理
     尚、この指定が無い場合、シェルスクリプトはカレントのシェルで処理します。
     この為、カレントシェルがBorneシェルで、先頭に"#!/bin/csh"が記述されて
     いないCシェルスクリプトを起動すると構文エラーとなる可能性があります。
シバン(Shebang)というらしい

参考

<シェルスクリプトを覚えよう!>




shの場合は上のようにすれば良い
が、pythonとかrubyとかだと置き場所が/bin以下でないことがある(らしい)

そこで次のような書き方をして、置き場所を明示的に示さない方法もあるらしい

#!/usr/bin/env python

ランキング参加中です

↓クリックしていただけると嬉しいです〜