• ベストアンサー

BシェルとCシェル

Solarisサーバの運用において、シェルでスクリプトを作成する場合、BシェルとCシェルでは、どちらが多く用いられているでしょうか?

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

  • ベストアンサー
  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.4

ちょっと補足。 BshかCshかという選択ならBshですが、他の方が言っておられるようにbashなどで書いても構いません。 ・一般ユーザが利用するsetuidしていないスクリプト  shでもbashでもzshでもなんでもよい。  csh系(tcshも)だけはやめた方が無難。 ・setuidしていいるスクリプト  シェルスクリプトはsetuidしないのが安全。  csh系(tcshも)だけはやめときましょう。 ・Solaris以外のOSに移植するかも知れないスクリプト  shかbashで書く。  OSにデフォルトで存在するシェルで書いておいた方が無難。  shはどのOSにもあるが、微妙なところで仕様が違うので要注意。  ただ、Solarisの/bin/shは一番古くて仕様がしょぼいので、  Solarisで動けばよそに持っていっても動くと期待できる。 ・システムのブート段階などで動くスクリプト  基本は/sbin/sh。シェルがスタティックリンクされている必要がある。

bmetr77
質問者

お礼

ありがとうございました。

その他の回答 (3)

  • entree
  • ベストアンサー率55% (405/735)
回答No.3

/etc/init.d を見てみてください。全て B シェルで書かれているのが分かりますね。実際に Solaris に限らず、シェルスクリプトはほとんど B シェルもしくは bash (B シェル系) で書かれています。 C シェルは一般ユーザのログインシェルとしてよく用いられてきましたが (スクリプトを書くときは、一般ユーザでも普通は B シェル)、Solaris でも Solaris 8 から bash がデフォルト・インストールされるようになったため、C シェルを使う機会はますます減ってきていると思います。 あと、予断になりますが、root ユーザのログイン・シェルだけは /sbin/sh から変更してはなりません。

bmetr77
質問者

お礼

ありがとうございました。

回答No.2

 Cシェルが流行っていた頃でも運用管理で利用するシェルはBシェルと言われていました。 最近は、Bシェル系のKSHかBashなどが利用され、Cシェルが余り利用されないのではないでしょうか?

bmetr77
質問者

お礼

ありがとうございました。

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.1

Bシェルです。 Solarisに限らず、シェルスクリプトをCシェルで書いてはいけません。

参考URL:
www.klab.ee.utsunomiya-u.ac.jp/~hiroki/
bmetr77
質問者

お礼

ありがとうございました。

関連するQ&A

  • Bシェル・Cシェルについて

    会社でシェルを使うことになりました。 OSはSolarisなので、basshが使えると考えていましたが、bashはNGと回答が来てしまいました。 回答はBシェルまたはCシェルを使うということでした。 bashはBシェルの拡張版でLinuxの標準シェルであるという事は知っています。 Bシェルだけの機能を使うのはかなり困難な気がしますし意識して作ったことがありません。 bashかBシェルか意識して使うにはどうすればよいでしょうか?

  • Cシェル内でBシェルの様な関数の記述方法はありますか?

    タイトル通り、Cシェル内でBシェルの様な関数の記述方法はありますか? Bシェルで言う所の以下の様な記述方法です。 関数() { } OSはSolarisです。 よろしくお願いいたします。

  • Cシェルについて

    OS:Solaris10:Sparc版 未だに初心者(いつになったら卒業できるのやら) 実はCシェルで1Mのファイルを1万個作るシェルを考えています。 なぜかというと移設の為です。 シェルは作成した事はないので困っています。 (自分なりに考えてやって見たいけどテスト機器がないので動作がわかりません。) 申し訳ございませんが詳しい方のご教授をお願いします。

  • シェルスクリプトのBシェル(Bourne)に出てくる、$0,$1,$2

    シェルスクリプトのBシェル(Bourne)に出てくる、$0,$1,$2...のような位置パラメタや、$?,$$,$!,$-のような特殊変数がありますが、これはPerlやRubyもあるようですが、意味や効果、やり方等は同じでしょうか。 当方はPHP,JavaScriptしか触れていませんし、PHPやJavaScriptは、そのような位置パラメタや特殊変数は見当たりませんでした…。 つまり、PerlやRubyはUNIXのコマンドから誕生したスクリプト言語ということでしょうか。 こういった位置パラメタや特殊変数はPerlやRuby以外に他の言語にもありますでしょうか。PythonとかCとかJavaとか…。 また、Bシェルを学んでいる途中ですが、シェルスクリプトの中にはbourne以外にもbashやC Shell,zsh,Perlがありますが、何故Perlが入っているのでしょうか。 Perlをやっている方は別途シェルスクリプトをやる必要はないということでしょうか。

  • Solaris7のCシェル文字数制限について

    Solaris7でCシェルスクリプトを使っています。 lsで拾ったファイル名をforeach文でまわしてみたのですが 文字数(ファイル数?)の制限に引っかかってしまいうまく回りません。 そこで質問なのですが、 Solaris7のCシェルforeach文で回せる文字数の限度をご存知の方いらっしゃいましたらご教授下さい。 宜しくお願い致します。

  • シェルスクリプト間で排他をとりたい

    環境 linux(redhat) 使用シェル bash シェルスクリプトAとシェルスクリプトBを作成し、 シェルスクリプトAが動作している間は、シェルスクリプトBの動作を禁止したいと考えています。 例えば、シェルスクリプトAが起動している状態で、シェルスクリプトBが起動されたとき、シェルスクリプトBは、シェルスクリプトAが起動していることを検知して、自発的に処理を終了するようにしたいと考えています。 上記のような仕組みをシェルスクリプトで実現可能でしょうか? 基本的には、シェルスクリプトの先頭で、ある資源のロックを行い、終了時にロックの解放ができれば、その仕組みは実現可能と考えています。 (シェルの異常終了時は、ロックが自動的に解放されることが望ましい) 上記のようなことをシェル(bash)で実現可能でしょうか。 bash単独での方法、もしくはbashからperl,C言語作成の実行モジュールを呼び出す方法でもかまいません。 (ちなみにperl(もしくはC言語作成のモジュール)単独では実現可能なことはわかっています)

  • シェルの習得方法について

     システムの運用を行うことになり、Bシェルで作られたスクリプトの編集、追加を行うことになりました。  以前、コマンドラインでシェルを叩いたり、作られたスクリプトの値を変更する程度の作業は行っていました。  しかし今回は要求に合わせて設計(記述する内容)、作成、テストまでを行うことになり、経験の無い私はシェルの勉強をはじめました。  シェルを習得するために入門UNIXシェルプログラミングを読み、基本的な書き方や、シェル変数、リダイレクションについて大まかな概略は理解できたのですが、読んだだけで友人にはスクリプトの例を見たり、自分でスクリプトを作っていくことを進められましたが、何から手をつけ、どのように習得していけばよいか判らない状況です。 是非、習得方法をご存知の方が居られましたら、アドバイスお願いします

  • CYGWINやKNOPPIXを、BシェルからCシェルに変更したいです。

    お世話になっております。 疑問となっている事は以下の通りです。 (1)CygwinのプロンプトををBシェルからCシェルへ変更する手順。 (2)KnoppixのプロンプトををBシェルからCシェルへ変更する手順。 ということをしたいと思います。 (1)については、Cygwin.batの最後にあるbashをcshに変更したのですが、Cygwin自体が起動しなくなりました。 (2)については、どの様な設定をすればよいか全く解らない状態です。 どのような設定をすれば、Cシェルが扱えるようになるのでしょうか。 ご教授のほど、宜しくお願いします。

  • シェルにてファイルの自動削除をするには?

    シェルにて「abc.0101171109(.以降は年月日時分)」 というようなログファイルを一日3回、作成しています。 これを一週間、または一ヶ月たったら 自動的に削除するにはどうすればよいでしょうか。 OSはSolaris2.6で、 シェルはBでもCでも何でもかまいませんのでよろしくお願い致します。

  • シェルスクリプト

    シェルスクリプトに関しては、まったくの初心者です。 OSは、SolarisとLinuxですが、シェルスクリプトを利用して下記のような自動実行プログラムを作りたいのですが、どなたかご教授下さい。 一台のWWWサーバのログ(例:access.log)を、1日に一回(出来ましたら朝の5時)に別サーバに送信するプログラムなのですがいかがでしょうか?このとき、出来れば送信先のファイル名は、送信した日付(例:20020222.log)にしたいです。説明不足かも知れませんが、ひとまずこれでお願いします。