Linux入門
Unixの歴史
Unixは、1969年にAT&Tベル研究所のKen Thompson、Dennis Ritchie、Brian Kernighanによって開発されたOSである。もともとベル研究所では「Multics」というマルチタスクOSを開発していたが、システムが大きくなりすぎた。そこで、Multics上で遊びとして開発された「Space Travel」というゲームを動かす目的で、研究所の片隅でほこりをかぶっていたDEC社のPDP-7というコンピューター上に、Multicsの小型版ともいえるOSを開発した。これがUnixの始まりである。
さまざまなUNIX
Unix系OSは、各社や各団体が独自に拡張を行い、System V(AT&T)、BSD(カリフォルニア大学バークレー校)、Solaris(Sun Microsystems)、HP-UX(HP)、AIX(IBM)、XENIX(Microsoft)、UnixWare(Novell)、FreeBSD、NetBSD、OpenBSDなど、さまざまな種類とバージョンが開発されてきた。Unix系OSの標準化団体(UNIX International、OSF、X/Openなど)もいくつか発足し、統合や再編を経て、現在はThe Open Groupという団体が標準化を行っている。
UNIXとUnix
「UNIX」という名称はThe Open Groupが商標を管理しており、IEEEが定めるUnix系OSの標準仕様である「POSIX」を拡張した「Single UNIX Specification」という標準仕様を満たすものだけが「UNIX」を名乗ることができる。ただし、この仕様を満たすOSは多くない。仕様を満たさないOSは、「UNIX」ではなく「Unix系OS」や、小文字を交えた「Unix」と表記される。
Linuxの登場
Linuxは、フィンランドのヘルシンキ大学にいたLinus Torvaldsが1991年11月に開発したUnix系OSの一つである。オープンソースとして公開され、PCでも動作したため急速に広まった。厳密には、LinuxはOSカーネルだけの名前である。これにGNUプロジェクトが開発したC言語コンパイラー(gcc)などの各種基本ソフトウェアを加えたものをGNU/Linuxと呼ぶ。また、GNU/Linuxをベースにインストーラーやパッケージ管理システムなどを追加した各種「Linuxディストリビューション」が存在する。
オペレーティングシステム(Operating System) コンピューターを実用的に利用できるようにするインターフェースである。 例: Windows、Mac、Linux、Unix
Linuxディストリビューション
初期にはTurboLinux、Miracle Linux、Debian、Red Hat Linuxなど多くのディストリビューションが乱立していた。現在はDebian系とRed Hat系が主流である。Debian系では、低価格PC向けOSとしても採用されていたUbuntuが広く使われている。Red Hat Linuxは、商用の安定性を高めたRed Hat Enterprise Linux(RHEL)と、実験的に最新技術を統合するFedoraに分化した。RHEL互換の無料ディストリビューションであるCentOSもよく使われている。
Debian系ディストリビューション
| ディストリビューション | 説明 |
|---|---|
| Debian | コミュニティによって開発されるGNU/Linux |
| KNOPPIX | CDから起動して利用できるLinux |
| Ubuntu | 豊富なデスクトップ環境を提供することが特徴 |
Red Hat系ディストリビューション
| ディストリビューション | 説明 |
|---|---|
| Fedora | Red Hatが支援するコミュニティ「Fedora Project」のLinux |
| Red Hat Enterprise Linux | Red Hatが提供する商用Linux。RHELとも呼ばれる |
| CentOS | RHELとの完全互換を目指すLinux。RHELの無料版に近い |
| Vine Linux | 日本で開発されたLinux |
Slackware系ディストリビューション
| ディストリビューション | 説明 |
|---|---|
| OpenSUSE | Novellが支援するコミュニティで開発されたLinux |
| SUSE Linux Enterprise | openSUSEを基にした安定版の商用Linux |
その他のディストリビューション
| ディストリビューション | 説明 |
|---|---|
| Arch Linux | パッケージ管理システムにPacmanを使用 |
| Gentoo Linux | Portageパッケージ管理システムを採用したLinux |
Unix/Linuxの利用先
当初のUnix系OSは主にエンジニアリング系の業務で使われていたが、現在はWebサーバー、メールサーバー、ルーターなどのネットワーク機器、テレビ、カーナビゲーションなど、さまざまな用途で使われている。MacもMac OS X以降、BSD Unixを基盤として作り直された。GoogleのAndroidもLinuxを基盤としている。Unix/Linuxの大きな対抗軸ともいえるMicrosoft Windowsも、Unix系OSとは呼ばれないが、Unix系OSの技術や思想を一部取り入れている。
Linuxの特徴
- 権限を持つ。
- Linuxシステムは「所有権/許可権」という二つの権限を使用する。
- マルチユーザー環境をサポートする。
- Linuxシステムはマルチユーザーおよびマルチタスク環境を使用するため、多数のユーザーが同時に作業できる。
- 大文字と小文字を区別する。
- Caps Lockキーのオン/オフを確認する必要がある。
- Windowsのようなファイル拡張子の概念がない。
TUIとGUI
- TUI (Text User Interface)
- テキストで入出力される環境。
- GUI (Graphical User Interface)
- グラフィカルな環境。
ディレクトリとフォルダーの違い
TUI環境ではディレクトリと呼び、GUI環境ではフォルダーと呼ぶ。
ユーザー
UNIXでは、ユーザーはdevkumaやkimkcなどのユーザー名で識別される。ユーザー情報は/etc/passwdというファイルに記録される。
グループ
ユーザーは複数のグループに所属できる。たとえば、devkumaとkimkcの二人がadmというグループに所属しているとする。グループ情報は/etc/groupsというファイルに記録される。
権限
rwxr-xr-xのような9文字は権限を表す。
シェル(Shell)
Windowsのコマンドプロンプト(旧称: MS-DOSプロンプト)に相当するUNIXのコマンド環境をシェルという。テキストモードでコマンドを入力すると、結果もテキストで表示される。
プロンプト(Prompt)の定義
コマンドの入力を受け付け、実行できる待機状態である。
プロンプトの構造
Windows (MS-DOS)
ドライブ名//パス>
C://windows>
Linux (Bash Shell)
| 区切り文字 | 意味 |
|---|---|
| root | ログイン中のユーザーアカウント名 |
| localhost | Linuxシステムのホスト名 |
| ~ | 現在の作業ディレクトリ |
| # | 管理者アカウント(#)、一般アカウント($) |
[root@localhost ~]#
[devkuma@localhost ~]$
環境変数
プログラム間で情報を交換するときに参照できる特殊な変数を環境変数という。Windowsの「AUTOEXEC.BAT」で指定する「PATH」と同じようなものである。CGIは環境変数を通じて、WWWサーバーとCGIスクリプト間で多くの情報を交換する。主な環境変数は次のとおりである。
| 環境変数 | 意味 |
|---|---|
| PATH | コマンド検索パス。たとえばPATH=/bin:/usr/binの場合にlsコマンドを実行すると、シェルは/bin/ls、/usr/bin/lsを順に探し、最初に見つかったコマンドを実行する。逆に、PATHに設定されていないコマンドは/bin/lsのように絶対パス名で指定する必要がある。 |
| TZ | タイムゾーン。対象地域のタイムゾーンを指定する。たとえば韓国の場合はTZ=KST-9(最近ではTZ=Asia/Seoul)と指定しておく。指定しないと、システムによっては時刻が9時間ずれることがある。 |
環境変数の値を確認するには、シェルではprintenvコマンド(printenvが使えない場合はset)を使用し、Perlでは$ENV{'環境変数名'}を使用する。
UNIXとWindowsの違い
| 項目 | UNIX | Windows |
|---|---|---|
| ドライブの概念 | ない | ある |
| ディレクトリ区切り文字 | / |
\ |
| ファイル一覧 | ls | dir |
| ファイルコピー | cp | copy |
| ファイル削除 | rm | del |
| ファイル移動 | mv | move |
| ファイル名変更 | mv | ren |
| ディレクトリ作成 | mkdir | mkdir |
| ディレクトリ削除 | rmdir | rmdir |
| ディレクトリ移動 | cd | cd |
| 一般的なヘルプ表示 | man コマンド | コマンド /? |
| 環境変数表示 | set/printenv | set |
| ファイル名の長さ | 256文字 | 255文字 |
| ファイル名の大文字/小文字 | 区別する | 区別しない |
| 実行ファイル | 権限による | 拡張子による |
| テキストファイルの改行文字 | <LF> |
<CR><LF> |
| 文字コード | UTF-8(以前はEUC) | UTF-8 |
POSIX
LinuxやUnix関連の資料を見ていると、POSIXという言葉をよく目にする。 POSIXはPortable Operating System Interface with Unixの略である。Unixの互換性と移植性を高めるために、国際標準化機構ISOによって標準として採用された規格である。 1990年代初め、複数の企業が独自のUnixを開発し始めたが、同じUnixオペレーティングシステムであっても、会社ごとに固有機能がカスタマイズされ、互換性と移植性が大きく低下した。 そのため、ユーザーは同じUnixであってもプログラムの実行や移行に大きな手間をかける必要があり、システム管理や使い方まで開発会社ごとに異なる形式を取るため、非常に不便だった。 このような理由から、Unixの互換性と移植性を高めるために、ISOはPOSIXという規格を標準として採用した。 したがって、1990年代後半以降にリリースされたUnixの多くは、POSIX規格を満たすよう努めている。POSIX規格は非常に広い範囲を含んでいる。