忍者ブログ
日々の研究生活のメモ書きなど

シェルスクリプトって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)というらしい

■ 参考

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




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

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



■ 参考
シェルなどのインタプリタを起動するための「#!」。shebang。







時間ができたらそのうち読んで勉強する

サンプルスクリプト集












PR
プロフィール
HN:coffee
職業:物理屋(自称)
趣味:映画鑑賞
自己紹介:
#include <stdio.h>
#include "MyProfile.h"

#define TWITTER coffee_pote

#define WISH_LIST
amazonのほしい物リスト
#ifdef RICH_FLAG
// ↑いつも支援いただきありがとうございます m(_ _)m
#endif


int main(void){

printf("\n");
printf("D論・・・? あぁそんな子もいましたね(執筆中)\n");
printf("\n");
printf("猿でもわかるgnuplot を執筆中(こっちの執筆は半年以上何も進んでいない・・・・)\n");
/* 最終更新 2017/07/19 */
return 0;

}
カウンター
ブログ内検索
ツイートするボタン
Flickr

Template "simple02" by Emile*Emilie
忍者ブログ [PR]