パソコン悪戦苦闘記録

Linuxシェルスクリプトの実行 シバン記述とファイル実行権限

 Linuxを、CLI(コマンドラインインターフェース)で操作するには、ユーザーは、シェルにコマンドを与えることになります。
 「シェル」は、コマンドを解釈し、カーネルに処理を実行させる橋渡し役のソフトウェアです。




 シェルにコマンドを与えるには、ユーザーがその都度キーボードから手で入力する方法もありますが、コマンドをあらかじめファイルに記述しておく方法もあります。
 コマンドをあらかじめ記述しておくファイル、それがシェルスクリプトです。
 ⇒ こちらの記事をご覧ください。

 シェルスクリプトの実行方法は、いくつかあります。
 第1が、「bash ファイル名」の形です。
 スクリプトを処理するコマンド(ここではbash)と、スクリプトが記述されたファイルを指定します。
 第2が、スクリプト名(ファイル名)の指定だけでの実行です。
 この方法でいくには、
 (1)スクリプト1行目にシバン(shebang)を記述する
 (2)ファイルにchmodコマンドで実行権限を付与しておく
 (3)パス付きでファイル名を指定する
の3つが必要です。
 第3が、sourceコマンドを使う方法です。

 上記のうち、第2の方法(スクリプト名の指定)での実行が一般的とされています。

 今回の記事で書きたかったのは、スクリプト実行に関する技術的なことではなくて、「日本語の解釈」についてです。

 上記第2の実行法については、次のような文章で解説されていました。
 「シェルスクリプトの1行目にシバンを書いておき、ファイルに実行権限を付けておけば、ファイル名の指定だけで直接実行できます。」

 この文章をどう読むかです。
 私は、上記文章を
 「1行目にシバンを書いておくことによってファイルに実行権限を付けておけば」
という意味に解釈しました。
 シバンを書くことによって、ファイルに実行権限が付与される、と読んだわけです。

 ところが、そうではありません。
 上記文章は、
 「1行目にシバンを書いておき、かつ、ファイルに実行権限を付けておけば」
という意味で書かれているのです。
 スクリプト1行目にシバンを記述するばかりでなく、ファイルにchmodコマンドで実行権限を付ける、この両方が必要ですよ、と。
 2通りの解釈ができてしまう日本語の文章。
 日本語って、むつかしいものです。奥ゆかしい、微妙な表現が得意な言語ではありますが、それによって混乱も起きます。

 「シェルスクリプトの1行目にシバンを書いておき、ファイルに実行権限を付けておけば、ファイル名の指定だけで直接実行できます。」
という文章があれば、
 「シバンを書けば、それによって、ファイルに実行権限が付きますよ。」
っていう意味にも、読めてしまうんですけど・・・・・・、十分。



 それでは、また次の記事で。
goosyun

コメント一覧

goosyun
narkejp さん
 シェルスクリプトの習得には、理屈を理解することも重要かもしれませんが、それと並んで、いえ、それ以上に、「慣れ」が必要かもしれません。
 何度も触れ、慣れ親しんで、頭を「Linuxモード」にするってな感じでしょうか。
 そうすると、解説文を読んで、私のようなトンチンカンな理解をすることもなくなるんではないか。
 ・・・・などと、考えています。
 いつも、コメント、ありがとうございます。
    goosyun
narkejp
たしかにそのとおりですね。1行目で指定したインタプリタが、実行権限を与えられたファイルを実行するのですけれどね。私が読んだ本では、「シェルスクリプトは基本的には普通のファイルですが、1行目には、このファイルがシェルスクリプトであることをUNIXに伝えるための特別な命令を書きます。#!の後ろにtschのパス名を書きます」(小山裕司他『Linux入門』1998, p.242)とあります。bash でなく tsch であるところなども、時代を感じます。この後、bash の説明が簡単にあり、chgmod の説明はその前、UNIXの基本操作の章中(p.180)にありましたが、わかってみれば簡潔な文章でも、実は誤解を受けやすい表現かもしれません。
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「Ubuntu」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事