パソコン悪戦苦闘記録

スクリプト1行目のシバン(初心者を惑わせるWebサイト)

 今回は、Linux初心者を惑わせるWeb情報のことです。
 私と同じような初心者の方が戸惑うことのないよう、注意喚起をしておこうと思います。
 シェルスクリプトの冒頭一行目の決まり文句、シバンの記述についてです。



【第1】 Linuxはむつかしくない 
 Linux OS は無償で利用できるけれども、特別な知識がないと扱うことはむつかしいもの、システムエンジニアなどが使うもの、そのように受け止めていました。
 けれども、図書館で偶然に手に取った一冊の本(水野源著)で、その考えが覆えされました。
 一般の人でも十分に使えるもの、との考え方に変わりました。
 一昔前は、確かに、専門知識が要求されるコマンドを打ち込んでLinuxを操作していたのですが、現在では改良が加えられ、アイコンなどをマウスでクリックするなどの方法により、直感的に操作できるLinuxも登場しているのです。
 このように、マウス操作で直感的な操作が可能な環境を、GUI(グラフィカル・ユーザー・インターフェース)と呼びます。GUIと書いて、「グーイ」という読み方もされています。
 このGUIが備わったおかげで、Linuxは、Windows や Mac OS などと同じような操作感で、違和感なく使える庶民的なOSに変身しました。Linuxで扱えるアプリケーションソフトも豊富に揃っていて、困ることもありません。
 
 実際、自分のPCにLinuxをインストールして使ってみると、それを体験できます。インストール作業も、それほどむつかしいものではありません。
 ⇒ 「インストールマニュアル」はこちら!

【第2】 コマンド操作も、少し覚えよう 
 このように、主にマウスによる操作で、気軽に使っていたLinuxですが、コマンド操作も少し覚えてみようという気になりました。
 「GUI」(グラフィカルインターフェース)に対して、コマンドという特別な文字列(コマンドライン)を打ち込んで操作する環境のことを「CLI」(コマンドラインインターフェース)と呼びます。

 「CLI」のことも少し覚えてみようという気になったのは、この連休を利用して読んだ本のためです。
 その本とは、 
「Ubuntu 18.04 LTS 日本語 Remix 使い方が全部わかる本」
です。
 これをさらっと読んで、Linuxのことを軽く勉強したのですが、それがきっかけです。

 そこには、次のように書かれていました。

《以下は、上記文献からの抜粋》
 「場合によってはGUIよりもCLIを使った方が効率的にタスクをこなせることもあります。CLIはGUIに比べ、大量のデータの一括処理や自動化が得意だという特徴があります。例えば、大量にあるファイルの加工、集計、ファイルのリネームといったマウスでの手作業では時間がかかりすぎる作業も、CLIを使えば一瞬で終わらせることも可能です。」
《以上、引用終わり》
  ちなみに、この解説部分も、「水野源」さんが担当されています。

Ubuntu 18.04 LTS 日本語 Remix 使い方が全部わかる本 (日経BPパソコンベストムック)
日経Linux
日経BP社


 この一つの例として、デジカメで撮影した大量の写真を撮影日ごとにフォルダ分けする作業が示されています。
 これをマウスを使って手作業でやると面倒な上に、ミスもしやすいのに対して、CLIで行うプログラムだと、一度コマンドを実行すれば、待っているだけで自動的に処理が完了する上に、絶対にミスが起きない、というのです。写真に埋め込まれているEXIFデータを調べて、プログラムが自動でフォルダ分け作業をするからです。
 
 この解説を読んで、「なるほど!」と、納得しました。
 WordマクロやExcelマクロを思い浮かべれば、それは十分に納得できます。
 
【第3】 シェルスクリプト
 Linuxコマンドの勉強は、今まさに始めたばっかりですから、習得はこれからです。
 CLIでLinuxを操作するには、コマンドをテキストファイルに書き込んでおいて、「端末」(Terminal)ソフトで、それを実行するのが楽で、便利なんだそうです。テキストファイルであらかじめ用意しておけば、その場でいちいちコマンドを打ち込む必要がないのです。このテキストファイルに書き込まれたプログラムのことを「シェルスクリプト」と呼ぶのだそうです。
 
【第4】 初心者を惑わせる情報
 早速「シェルスクリプト」のことを勉強しようと、Webサイトを巡っていたら、そのサイトの一つに、初心者を惑わせる情報がありました。
 私と同じように途方にくれる方が出ないように、ここに注意喚起しておきます。
 
その情報が掲載されたWebサイトとは・・・・、
リナックスア○デミーというところが開設しているWebサイトで、
「エ○ジニアの入り口」という表題が付されています。

そこに、次の記述があります。 
「シェルスクリプトを記述するときに、まず初めに覚えなければならないのは次の一行だ。
#!/usr/bin/bash
これはスクリプトの一行目に記述する。
この一行目で、実行時どのシェルでスクリプトを実行するかが決まる。」

 今まさに勉強を始めたばかりの、『ズブの素人』です。とにかくそこに書かれていることをそのまま信じて、そのまま真似をするしかありません。
 上記のとおりに、まず最初の一行目に 
  「#!/usr/bin/bash」
と書きました。さらに、次の行で、
  「echo hello-world」
と、そのページに掲げられているコマンドをそのままコピーし、拡張子「.sh」というテキストファイルに保存しました。

 ところが、このシェルスクリプトを実行するのですが、
 「誤ったインタプリタです: そのようなファイルやディレクトリはありません」
というエラーメッセージが表示されます。
 素人のやることだから、プログラムの中にどこかにスペルミスがあるのだろうと、何度も何度も書き直し作業をやって、その都度試してみるのですが、どうしてもできません。どこを見直しても、同じメッセージしか出てこないのです。
 これには、ほとほと困りました。
 まだコマンドの意味など全く理解できない初心者に、どこが間違っているなど突き止めようがないじゃないですか。

 そのwebサイトのページには、【初心者向け】という文言が、堂々と掲げられています。
 【初心者向け】なのであれば、そのページをコピーさえすれば、すんなり動く例を示す必要があるんじゃないでしょうか。ねぇ、「リナックスアカデ○ー」さん。

 仕方なく、他のサイトも参考にして、ようやく、まともに動くプログラム記述が見つかりました。
 プログラム一行目に書く、「シバン」又は「シェバン」という名の決まり文句ですが、
 「#!/usr/bin/bash」 を
 「#!/bin/bash」
とすると、うまく動くようになりました。
 
 このように、「リナック○アカデミー」というところが開設しているWebサイト「エンジ○アの入り口」は、初心者を惑わせる例示を載せています。決してそこに掲げられているように、「初心者向け」ではないと思います。
 私は今の時点では、「#!/usr/bin/bash」と「#!/bin/bash」の違いは、全く分かりません。見当もつきません。
 「usr」の記述が必要な場面も、おそらくあるのでしょう。
 しかし、初心者を対象としたサイトであるならば、そこに記述されたコマンドをそのままコピーすればまともに動く例示を掲載してもらいたいものです。
 
 Googleで検索したら、わりと検索上位でヒットするページです。
 そういう待遇を受けるページであれば、それなりの責任を持ってもらいたいものです。 

《 2019年5月12日 追記 》
 「/bin」とは何なのか、
 「/bin」と「/usr/bin」とはどう違うのか、などについては、
  ⇒ こちらの記事へ!

コメント一覧

goosyun
narkejp さん
 ご丁寧なコメント、ありがとうございます。
 詳しい解説で、素人の私にも、何となくイメージできます。
 「バイナリ置き場」という表現は、なるほど、分かりやすいですね。
 これから徐々に勉強していきます。今後もご指導いただけると幸いです。
narkejp
私はLinuxにはSlackwareというディストリビューションで入門し、VineLinuxで実用的に使い始め、現在はUbuntuLinuxに落ち着いていますので、このへんの事情が多少わかります。ユーザーとOS本体との仲介役をシェルといいますが、最古のshからcsh,ksh,tsh,zshなどシェルプログラムは様々に変化していて、bash(Bourne Again sh)もその一つで、利用者が複数のシェルの中から選ぶことができます。それで、usrディレクトリの中のバイナリ置き場(/usr/bin)からbashを呼ぶために/usr/bin/bash としていました。
Ubuntuではシェルはbashで/usr/binではなく/binに置くようにした、ということだと思います。それで/bin/bashでないとコマンドが動かないということですね。考え方としては、Redhat系では/usr/bin/bashで良いけれど、Ubuntuではbashはusrプログラムという扱いではない、という理解です。私が長く愛用しているjgawkなどはUbuntuでも/usr/binにあります。
このあたり、Ubuntuでは「sudo コマンド」という形で実行しなければいけないなど、root権限の扱いも少し変わっています。Windowsで言えば、Professional と Home の違いみたいなものです。Ubuntu は Home のポジションに近いですね。
名前:
コメント:

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

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

 

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

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

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