UNIX / Linuxについて「とりあえず」部分を理解する

#この記事の目的
**UNIX、Linuxについて「とりあえず」の部分を理解すること。**

これについてまとめようと思ったきっかけは、環境構築作業中のエラー。
ターミナルの表示をカスタマイズしようと設定ファイルをいじっていた時に、異なるLinuxディストリビューションの書き方のコードを入れたことが原因だった。らしい。

...Linuxディストリビューションってなんだ？
そもそもLinuxも、OSだってことしか知らない...！

調べていると色んなワードが出てきて混乱しそうになったので、個人的に「ひとまずこれだけ分かれば良いかしら？」という部分をまとめました。


#Linuxとは

- 1991年に開発されたOS
- **オープンソースソフトウェアで、無料かつ自由に改変や配布が可能**
- UNIXを参考にリーナス・トーバルズ氏によって開発されたから、「Linux」
- 他のOSと比較して、低い性能のコンピュータでも軽快に動く特徴がある
- パソコンやスマートフォン、サーバーで多く利用されている
- Amazon AWSのAmazon Linux、Rasberry PiのRaspbian、Androidは、LinuxベースのOS

...あれ？そういえば、Linuxって自分でインストールした覚えがないのに、「Linuxコマンド集」に載っている``cd``とか``ls``とか使っている。なぜ？

「LinuxはUNIXを参考に作られた」というところがミソのようです。
UNIXについても特徴を調べてみます。

##UNIXって？

- 1969年に開発されたOS
- **企業が開発しており有償で、知的財産権が企業に属している**
- 安定性が高く、長時間にわたって動かす必要のある大型計算機やネットワークサーバーのOSとして利用されることが多い
- **macOSはBSD系UNIXベース**

なるほど、**macOSはUNIXをベースに作られているから、コマンドもほとんど同じ**ということのようです。

ただし、**オプションの書き方や意味が異なる**ことが多いようなので、オプション付きコマンドを参考にするときは特に、UNIXコマンドなのかLinuxコマンドなのか確認した方が良さそうですね。

もしmacOSで「参考教材がLinuxコマンドを使っていて不便だな...」というときは、**GNU coreutils**というパッケージを入れることで、UNIXベースOSのまま、基本的なLinuxコマンドを使えるようになるようです。（便利！）
導入方法はこちらの記事が参考になりそうです。
[テキスト処理のための標準的なコマンド群の macOS への導入手順](https://qiita.com/eumesy/items/3bb39fc783c8d4863c5f)

また、「BSD系」とは、UNIXベースのOSのうち、特にBSD（Berkeley Software Distribution）をもとにして開発されているOSのこと、らしいです。

#「Linux」という言葉は、2つの意味に分けられて使われる

1. 狭義のLinux：Linuxカーネル
2. 広義のLinux：Linuxディストリビューション

厳密にいうと、「Linuxカーネル」のことを指しているようです。

##Linuxカーネルって？
**OSの機能の根幹となる部分**。
CPU、キーボードといったハードウェアと、Finder、Safariといったアプリケーションを結びつける役割を担っている大事な部分。


##Linuxディストリビューションって？
[LPI-JAPANの記事](https://linuc.org/study/knowledge/358/)では、こう説明されています。

>Linuxディストリビューションとは、Linuxカーネルと、ユーザインターフェイスなどさまざまなプログラムをひとまとめにし、OSとしてユーザがすぐに使えるようにまとめたもののことを指します。

つまりLinuxディストリビューションは、**Linuxカーネルとアプリケーションやツールがひとまとめになって配布されているパッケージ**ということ。


###Linuxディストリビューションの流派
Linuxはオープンソースですから、いろんな企業が改変していった結果、3つの流派に分かれるそうです。

- RedHat系
    - RedHat社開発している、ディストリビューション
    - 有償のRHEL(RedHat Enterprise Linux)と、そのクローンの無償OSがある
- Debian系
    - オープンソースのディストリビューション
    - ユーザーフレンドリー
- Slackware系 
    - 安全性、セキュリティ、速さが特徴のディストリビューション
    - 公式配布されている状態が一つの完成形となっており、ソフトウェアの追加などカスタマイズして使う場合はユーザーの判断と操作に依存するので比較的難易度が高いと言われる

####具体的なLinuxディストリビューションの例
- RedHat系
    - RedHatEnterpriseLinux
        - 有償だが、技術的なサポートや長期的で的確なセキュリティーフィックスなどが受けられる
    - CentOS
        - RedHatLinuxの、有償部分を取り除いたもの
        - 企業が使用するメジャーなOSの一つ
    - Fedora
        - 最新の技術をどんどん取り組む
- Debian系
    - Debian
        - Ubuntuの元となった
        - 企業が使用するメジャーなOSの一つ
    - Ubuntu
        - インストールするとすぐに使える
        - 情報も豊富にあり、初心者向け
        - 企業が使用するメジャーなOSの一つ
    - Linux mint
        - Ubuntuから派生
        - 難しい設定が不要で、簡単に使える
        - MicrosoftOfficeに似た機能を持ったOfficeアプリケーションも付随している
    - elementaryOS
        - Ubuntuから派生
    - ZorinOS
        - Ubuntuから派生
- Slackware系
    - Slackware
        - 老舗
        - 使いこなすには、Unix/Linuxの運用管理に必要な基礎知識が必要

##寄り道：GNU/Linuxって？
調べていると、「GNU/Linux」という表記も度々目にしました。
これはなんでしょう？ [wikipedia](https://ja.wikipedia.org/wiki/GNU/Linux%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)から文章を引用します。
>GNU/Linuxシステム（ないしGNU/Linuxオペレーティングシステム、略してGNU/Linux）は、一般に「Linux」と呼ばれているものが、GNUプロジェクトによるソフトウェアを数多く利用しており、glibcやbashのような重要なライブラリやソフトウェアはGNUが開発しているとして、その呼称としてGNUプロジェクト側が主張している呼称である。

wikipediaには[「GNU/Linux名称論争」](https://ja.wikipedia.org/wiki/GNU/Linux%E5%90%8D%E7%A7%B0%E8%AB%96%E4%BA%89)なんてページもありますが、**GNUプロジェクトが開発したソフトウェアを多く含んだLinuxディストリビューションは、GNU/Linuxと呼ばれることもある**と思っていればいいのかなと思いました。

#まとめ：UNIXはLinuxの先輩OS

<img width="467" alt="スクリーンショット 2020-07-04 20.19.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459055/01d43a2f-253f-28cd-b095-29391f1fd284.png">

- LinuxはUNIXを元に作られた
- UNIXとLinuxの大きな違いは、「有償で知的財産権が開発企業に属しているか、オープンソースで無償で改変や配布ができるか」
- UNIXとLinuxでコマンドは同一のものが多いが、オプションの意味が異なる場合がある
- GNU coreutilsというパッケージを導入すると、UNIX系OSでもLinuxコマンドが使えるようになる
- Linuxは、OSの根幹となる「Linuxカーネル」と、アプリケーションとひとまとめにした「Linuxディストリビューション」の2つの意味を持つ



#実務で役立ちそうな関連記事

- [Linux コマンド一覧表](https://qiita.com/savaniased/items/d2c5c699188a0f1623ef)
- [Linuxのディストリビューションを判別する](https://qiita.com/koara-local/items/1377ddb06796ec8c628a#linux%E3%81%AE%E3%83%87%E3%82%A3%E3%82%B9%E3%83%88%E3%83%AA%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E5%88%A4%E5%AE%9A%E3%81%99%E3%82%8B)
- [テキスト処理のための標準的なコマンド群の macOS への導入手順](https://qiita.com/eumesy/items/3bb39fc783c8d4863c5f)

#参考サイト

- [世界のOSたち - コンピューターを支える一時代を築いた「MS-DOS」](https://news.mynavi.jp/article/20120420-msdos/)
- [３分間で人に説明できるようになるUnixとLinuxの違い](https://eng-entrance.com/unix_linux)
- [【ざっくりまとめ】Linuxディストリビューションを比較してみる](https://eng-entrance.com/linux-distribution-compare#SlackwareSlackware)
- [weblio辞書：BSD系OS](https://www.weblio.jp/content/BSD%E7%B3%BBOS)
- [GNU/Linuxに該当しないLinuxというのは存在するのでしょうか？](https://jp.quora.com/GNU-Linux-ni-gaitou-shinai-Linux-toiu-no-ha-sonzai-suru-node-shou-ka)