• ベストアンサー

シェル??? スクリプト???

この業界で仕事していていつも首をかしげてしまうことなんですけど、、、 シェルスクリプトのことを単に『シェル』と呼ぶ人がとても多いのですが、この表現はなんだか気持ち悪くありませんか? たとえば、『ちょっとシェル作って』なんて言いますけど、なんかシェル本体(/bin/shそのものとか)を作れといわれてるみたいで変な感じです。 これについて、みなさんどう思われますか? また、なぜこういう言い方が一般化したのでしょうか?(自分の会社だけかと思ってたら、委託さんや協力会社などの同業他社の方も使っているので。。。) くだらない質問ですがよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.3

メインフレーム文化の流れだと思います。プログラムに対してJCL(JobControlLanguage)がある。JCLって名前からわかるように言語なわけですが、それで記述された「プログラム実行のやりかたを記述したもの」もJCLと呼びます。unixではこのJCLがshにあたるわけで、shでかかれたものをシェルと呼ぶわけです。 JCLで書かれたものの方(shだとスクリプト)は、ほんとはジョブストリームかな?(自信なし。忘れちゃいました)

shige_70
質問者

お礼

ありがとうございます。 なるほど、たしかに私の周りのCOBOLerの人達も『JCLを書く』という言い方をしてますね。 その感覚で同様にshの位置づけを捉えると、たしかに『シェルを書く』と言う言い方が自然にでてきそうですね。 しかし、厳密に言うと『シェル』は言語ではありませんよね。システム構成上OSのすぐ上のレイヤにあるもの、OSを『貝殻』のように覆っている存在のことですよね。 あっちの文化の人はやっぱりそういう考え方はしないんでしょうかね?

その他の回答 (2)

  • k-841
  • ベストアンサー率27% (129/465)
回答No.2

すいません、この業界で仕事をしていていまだにそういう表現に出会ったことがありません。 sh のスクリプト・・・「シェルで書く」 csh のスクリプト・・・「シーシェルで書く」 perl のスクリプト・・・「パールで書く」 awk のスクリプト・・・「オークで書く」 などなど。 あ、でも、sh のスクリプトを書くのを、単に「スクリプトで書いて」ということはあります。実は暗に他のスクリプトでもいいから書いて、という意味がこめられているのかも知れませんけど。

shige_70
質問者

お礼

ありがとうございます。 なるほど、シェル『で』書く、と書けば違和感ないですね。 私の周りでは、『で』ではなく シェル『を』書く と 表現する人が多いんです。 業界でもいろいろあるんですね。 うちなんかホスト系出身のCOBOLerでunix文化にうとい人が多いからこんなふうになっちゃったのかも。。。

  • 100Gold
  • ベストアンサー率27% (284/1018)
回答No.1

シェルはまだ通じるので我慢できるのですが、cshで書いたシェルスクリプトをCと呼んだり、JavaScriptのことをJavaと呼んだりする人がいるのには困ります。 Cで書いてあるからと言われてみてみればシェルスクリプトだし、Javaが得意ですとか言うので、使ってみようかなと思ったら、得意なのはJavaScriptだったってことが、なんどかあります。 これに比べればシェルくらい……。自分ではそんな呼び方は決してしませんけど。

shige_70
質問者

お礼

ありがとうございます あーあー、いますね! JavaScriptのことをJavaって言う人! これもすごく多いですね。 さすがに、cshスクリプトをCっていうひとは今のところ見たことないですが、、、いるんですねえ。。。 なるほど、シェルと呼ぶのなんてとるに足らないですねえ。。。でも、初心者ならともかく、ばりばりの人が平気でシェルっていうのが、情けないというか何というか。。。

関連するQ&A

  • シェルスクリプトで #!/bin/sh ってどうゆ

    シェルスクリプトで #!/bin/sh ってどうゆう意味ですか?

  • シェルスクリプト 引数の引渡しについて

    こんにちは。現在シェルスクリプトを勉強中なのですがどうしてもわからないことがあり投稿させていただきました。 シェルスクリプトにて作成した引数(引数にスペースがある場合)を別のシェルスクリプトへ渡そうとしたときにうまく引き渡せなくて困っています。 詳しくは以下のスクリプト参照願います。 (1)引数作成のスクリプト _/_/_/_/_/_/_/_/_/_/_/_/ #!/bin/sh a="HELLO" b="\"WOW WOW\"" test.sh $a $b _/_/_/_/_/_/_/_/_/_/_/_/ (2)test.sh _/_/_/_/_/_/_/_/_/_/_/_/ #!/bin/sh echo $1 echo $2 echo $3 _/_/_/_/_/_/_/_/_/_/_/_/ これを実行すると $1=HELLO $2="WOW $3=WOW" となってしまいます。 これを $1=HELLO $2=WOW WOW $3=NULL(空欄) となるようにシェルスクリプトで作成することはできないのでしょうか? ご教授よろしくお願いします。 よろしくお願いします。

  • シェルスクリプトで困っています 2

    度々申し訳ございません。 現在、Linuxマシン1からLinuxマシン2へTelnetでログインし、Linuxマシン2上にあるシェルスクリプト(/bin/sh)を実行し、Linuxマシン2上のプログラムを実行した後、Linuxマシン2からログアウトするシェルスクリプトを作成中です。 その、Linuxマシン2からログアウトする際に、 "exit"を記述しているのですが、その"exit"がTelnetログアウトの意味で実行されず、シェルスクリプトを終了するの意味で実行されていて困っています。 どなたか上手くTelnetからログアウトできるようにシェルスクリプトを組む方法をご存知ではないでしょうか?もし判りましたらご教授下さい。 よろしくお願い致します。

  • シェルスクリプトの作り方

    OSはVineで、bashシェルです。 シェルスクリプトの作り方ですが、 1.ファイルを作る。 例えば、 #!bin/sh cd tmp このとき、ディレクトリはどこでもいいのでしょうか? 2.権限を付ける。 chmod u+x filename 3.実行 ./filename 他に気をつけることはないでしょうか? 実行すると、 bash: ./filename: bad interpreter: そのようなファイルやディレクトリはありません となってしまって、どうしても実行できません。

  • シェルスクリプトとmaillogの関係

    以下のようなシェルスクリプトを1時間ごとにcronで動かしています。 #!/bin/sh php -f check.php > result exit その結果、/var/log/maillogに、root宛てと思われる記録がシェルスクリプトと同じ1時間ごとに記録されるようになってしまいました。 maillogにその記録を残さないようにするにはどのようにしたらいいのでしょうか。 シェルスクリプトの書き方がおかしいのでしょうか。 よろしくお願いいたします。

  • シェルスクリプトのシバンを複数指定するにはどうすればいいですか?

    シェルスクリプトのシバンを複数指定するにはどうすればいいですか? #!/bin/sh #!/usr/bin/expect このように指定しても2行目のインタプリタを使ったスクリプトが動きません。 他に指定方法がありますか?

  • 簡単なシェルスクリプトを見てください。

    次のようなシェルスクリプトを作成しました。 #!/bin/sh echo [$1] awk '/"0312345678"/ {print}' /test > /test1 awk '/$1/ {print}' /test > /test2 のように簡単なスクリプトです。 $ sample \"0312345678\" で実行させたら、echo では"0312345678"に出力されます。 しかし、test1にはちゃんと結果が入っていますが、test2は空のファイルです。 なぜ、結果が違うのですか? 実行時、引数を渡す方法で、test1と同じ結果を得たければ、どうすればいいのですか?

  • linuxシェルスクリプトにつきまして

    linuxシェルスクリプトにつきまして 下記のシェルスクリプトがあります。 このうちの、 $num `expr 500 + $num` $num $num の部分がわからず、解説いただきたく、お手数をお掛けしますが、何卒よろしくお願いいたします。 #!/bin/sh num=1 while [ $num -le 100 ]; do printf "user%03d,%d,500,User %03d,/home/user%03d,/bin/bash\n" \ $num `expr 500 + $num` $num $num num=`expr $num + 1` done

  • sudoでシェルスクリプトを実行させたい

    /usr/bin/sudo を使って、xxx.shを実行させたいので、設定でxxx.shを許可しました。 その後Apacheで動くCGI(perlスクリプト)から、``を使って実行させようと考えています。 このときにこのxxx.shがうまく動きません。多分シェルにアクセスできないのだと思いますが、どうしたらこのスクリプトをroot権限で動かす事ができるようになるのでしょうか。関係あるかどうかわかりませんが、xxx.shの中身はディレクトリ作成コマンドなどです。ネットで検索したら、シェルスクリプトだけ許可にすればよいとあったのですが・・。セキュリティ的には/bin/shを許可するのはまずそうな気がするのですが、こちらを許可してもよいものでしょうか。 環境等 xxx.sh 755 所有者(user1) Apache実行ユーザ (apache) CGIの実行ユーザ(apache?) 挑戦したコマンド(とアパッチのログ) `/usr/bin/sudo sh ./xxx.sh`; ->パスワード求められます (/bin/shの権限がない?) `/usr/bin/sudo ./xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) `/usr/bin/sudo フルパス/xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) 不足の点などあればご指摘ください。

  • シェルスクリプトで配列が使えない

    シェルスクリプトを利用するときに変数を配列として扱えるという記述を見たので、 以下のようなシェルスクリプトを作成したのですが、エラーが出てきてしまいます。 端末で直接入力すると、正しく動作します。そのためなぜエラーとなるのかわかりません。 環境はubuntu 10.10、 GNU bash, バージョン 4.1.5(1)-release (i686-pc-linux-gnu) です。 ---------------------- #!/bin/sh list=(`ls`) echo ${list[0]} ---------------------- 3:Syntax error: "(" unexpected