目的
ソフトウェアについて理解を深める
目次
はじめに
今回は、なぜターミナルでコマンドを実行するといろいろな動作が行われるのか、その仕組みについて詳しくまとめたいと思います。
シェルとは
シェルとは、ターミナルとOSを繋ぐ窓口役のようなものです。
ターミナルで実行されたコマンドはシェルによって読み込まれ、OSに指示を渡した後、結果をターミナルに返して表示や実行などの動作をさせます。
また、シェルにもさまざまな種類があり、それぞれプロンプトやコマンド実行後の出力で、表示と挙動が若干異なります。
zsh
zshはシェルの1つであり、2019年以降のmacOS標準シェルです。
zshは、.から始まるドットファイルを作成・編集することで、設定を行うことができます。
PATH
PATHとは、「環境変数」と呼ばれるOS用の変数のことです。PATHには、複数の絶対パスの情報が保存されており、コマンドが入力されたときに、シェルはPATHに記述されたパスのディレクトリ内のファイルを検索します。
つまり、PATHに絶対パスを保存してアプリケーションのありかを示せば、どこからコマンドを実行してもアプリケーションのコマンドを打つことができます。
ちなみにPATHにアプリケーションのありかを示して、すべてのディレクトリからコマンドを使用可能にすることを、一般的に「PATHを通す」と表現するようです。
コマンドラインツールとは
コマンドラインツールとは、コマンドで操作するアプリケーションのまとまりです。
コマンドラインツールを導入することで、OSが初めからコマンドで操作できるアプリケーション以外のアプリケーションをPCにインストールできます。
Command Line Tools
Command Line ToolsとはmacOS専用のコマンドラインツールです。
macOSでは、元々Linuxコマンドで操作できるアプリケーションや機能を標準搭載しています。Linuxコマンド以外で操作するアプリケーションの多くはCommand Line Toolsのインストールによって、まとめてPCに導入できます。
パッケージ管理とは
まずパッケージとは、プログラムや処理、複数のライブラリをひとまとめにしたもののことです。
そしてパッケージ管理とは、パッケージやパッケージが持つライブラリなどの依存関係を考慮してインストールやバージョンアップを行う管理のことです。
1つのパッケージを利用したい場合、そのパッケージと依存関係にあるパッケージも合わせてインストールしてくれます。
このような管理を自動的に行なってくれるツールのことを、パッケージ管理ツールまたはパッケージマネージャーと呼びます。
Homebrew
HomebrewとはmacOSのパッケージ管理ツールです。
macOS上で動作するアプリケーションの多くがHomebrewからインストールできます。
Homebrewを使うことにより、依存関係のあるパッケージが正しく動作するよう、複数のパッケージのバージョンをコントロールしてインストールすることが可能です。
基本的なbrewコマンドとして下記のようなコマンドがあります。
| コマンド | 説明 |
|---|---|
| brew -v | Homebrewのバージョンを表示する |
| brew install [パッケージ名] | パッケージをインストールする |
| brew uninstall [パッケージ名] | パッケージをアンインストールする |
| brew list | インストールしたパッケージを表示する |
| brew search | インストール可能なパッケージを表示する |
| brew update | インストールしたパッケージを最新へ更新する |
Node.js
Node.jsは、本来ブラウザ上で動くJavaScriptをサーバーサイドで動作させる「実行環境」です。
Node.jsがインストールされると、サーバーサイドで利用できるJavaScriptのパッケージを活用できます。
もちろん、パッケージは依存関係を生むため、YarnなどのNode.jsのパッケージ管理ツールもあります。
Yarn
YarnとはNode.jsの環境上で動作するパッケージを管理する、JavaScriptのパッケージ管理ツールです。つまり、サーバーサイドで動作するJavaScriptのパッケージを管理するツールのことです。
Ruby on Railsでは、バージョン6系からJavaScriptのパッケージをデフォルトで利用するようになったため、プロジェクトの作成にYarnのインストールが必須となっています。
バージョン管理とは
変更したバージョンを記録あるいは外部から保存して、過去のバージョンや最新のバージョンに切り替えることなどをバージョン管理と呼びます。
バージョン管理をすることで、パッケージとの依存関係の問題を解消したり、変更して問題が発生したプロジェクトを過去の安定したバージョンに切り替える、などの対応ができます。
rbenv
rbenvはRubyのバージョンを切り替えるためのバージョン管理ツールです。
複数のバージョンのRubyをダウンロードしておいて、使用するRubyのバージョンをディレクトリごとに指定することも可能になります。
基本的なrbenvコマンドとして以下のようなコマンドがあります(rbenvの拡張機能であるruby-buildという管理ツールが提供するコマンドも含めています)。
| コマンド | 説明 |
|---|---|
| rbenv -v | rbenvのバージョンを表示する |
| rbenv install [バージョン] | Rubyバージョンを指定してインストールする |
| rbenv uninstall [バージョン] | Rubyバージョンを指定してアンインストールする |
| rbenv versions | インストールされているRubyバージョンの一覧を表示する |
| rbenv global [バージョン] | すべてのディレクトリで使用するRubyバージョンを切り替える |
| rbenv local [バージョン] | カレントディレクトリで使用するRubyバージョンを切り替える |
| rbenv rehash | RubyやGemに関するコマンドをバージョン変更後も使用できるようにする |