macroscope

( はてなダイアリーから移動しました)

Unix系 OS (例、Linux) のいいところ、不満だががまんするところ

【まだ書きかえます。いつどこを書きかえたかを必ずしも明示しません。】

- 1 -
[2022-03-27 コマンド行インタフェース (command line interface) と GUI] の記事に書いたように、計算機をコマンド行インタフェースでつかうのを奨励したいことがある。

そのばあいの計算機の OS (オペレーティングシステム) の選択は、1990年代ごろまでならばいろいろありえたと思うが、いまでは、だいたい Unix 系の OS になるだろう。ただし、ここでかりにつかった「Unix系の OS」という表現は、 本来の Unix のプログラムをひきつぐものにかぎらず、その仕様にならったものをふくめている。この意味では、Linux も Unix 系 のOS である。(実のところ、ここからの記述でわたしが具体的に想定しているのは、Linux である。)

わたしからみて、Unix系の OS には、それを積極的に採用したくなる特徴もある。他方、仕様の面で比較するのならば最適ではないと思うのだが、利用者人口が相対的に多く、利用者から提供される情報が多いという意味で、Unix 系を選択するしかないだろうと思うこともある。わたしは、そのような議論を、1997年に書いたメモ [(ある科学者の立場からの、雑談的)コンピュータ利用技術論] の第6節に書いた。しかしそのメモは当時のうちわの人にだけわかる表現をしていた。ここでは、2022年のいま、あらたに Unix系 OS にふれようとしている人むけに、要点を書きなおしてみる。

- 2 -
Unix系 OS のつぎのような特徴は、すぐれていると思う。

  • データはファイルというまとまりで管理される。(つぎにのべるディレクトリなどをのぞく、通常の) ファイルは、単なるバイト列としてあつかわれ、OSのレベルではファイル内部の構造は考えない。
  • ファイルの情報をもつディレクトリというものがある。ディレクトリもファイルと同様にあつかわれる。したがって、ディレクトリは他のディレクトリの情報をもつことができる。このしくみをくりかえして階層構造をつくることができ、ファイル群は ディレクトリの木 (tree) の構造となる。木は、分岐する一方で合流することはない。(実際のUnix系OSのファイルシステムには、リンクという機能があって、合流するような構造をつくることがあるが、例外と考えてよいだろう。)
  • マルチユーザーである。システム管理者と一般ユーザーの権限の区別や、一般ユーザーがアクセス可能な対象の制限ができる。
  • マルチタスクである。実行中のプロセスを区別して管理できる。あるユーザーのプロセスを、システム管理者にかぎらずそのユーザー自身が制御する (たとえば、強制終了させる) ことができる。
  • プログラムの標準入力・標準出力を、端末 (キーボードや画面) とファイルとのあいだできりかえること (redirection) や、ひとつのプログラムの標準出力をつぎのプログラムの標準入力とするパイプライン処理が、少ない字数で指定できる。
  • OSの機能を設定するためのファイルの多く (すべてではない) がテキストファイルであり、人がそれを読み書きするのに特別なプログラムを必要としない。

- 3 -
わたしは Unix系OS のつぎのような特徴を不満に思う。だからといって、他につかいたくなるOSがあるわけではなく、がまんして Unix系OSをつかっている。

  • ファイルを消すととりかえしがつかない。
  • ユーザーのファイルへのアクセス権限が、ユーザーを「所有者」「グループメンバー」「一般」の3とおりにわけ、権限を「読む」「書く」「実行する」の3とおりにわけるだけの形になっている。(ディレクトリの内容を見る権限は「実行する」にまとめられている。) だれがどのファイルを読み書きできるかをこまかく設定することができない。
  • システム管理者の権限を部分的に譲ることがむずかしい。ユーザーの多い計算機ではシステム管理者の責任が重くなる。
  • パイプライン処理や redirection をはじめとして、ASCII 1文字の記号が重要な意味をもつ。1文字まちがえると悲惨なことになる。
  • 古くからあるコマンドは、字数がすくなく、1文字まちがえると他の有効なコマンドになって予想外の動作をしてしまうことが多い。また、すなおに連想される語ではなく (たとえば cat は猫でも catalog でもない)、いちいちおぼえなければならないことが多い。
  • 古くからあるプログラムの設定ファイルは、(ファイル形式はテキストファイルであり単純なのだが) どのファイルが何の機能のためにあり、そのどの部分 (表形式の各列) がどういう意味をもつかは、それぞれのプログラムの歴史を背負っており、習わないとわからない。