はじめに
プログラミングや開発環境を設定する際によく耳にする「パスを通す」という言葉。この記事では、以下の内容について詳しく解説します。
- パスとは何か
- パスを通すとはどういうことか
- パスを通さないとどのような問題が起こるのか
パスとは?
パス(Path)とは、ファイルやディレクトリ(フォルダ)の場所を示すものです。オペレーティングシステム(OS)がプログラムやファイルを見つけるための「住所」ともいえます。
-
絶対パス: ルートディレクトリから目的のファイルまでの完全な経路。
例:/usr/local/bin/python
-
相対パス: 現在の作業ディレクトリから目的のファイルまでの相対的な経路。
例:../bin/python
PATH環境変数とは?
PATH
は、シェルやOSがプログラムを探す際に利用する「検索するフォルダの一覧」を保持する環境変数です。
OSはコマンドが実行されると、そのコマンドを探しに行きます。
しかし、全てのフォルダを探しに行っていたらかなり時間がかかります。
そこで、PATH環境変数というものを用意し、そこに登録されているフォルダのみを探しに行くことで効率良く探すことができるようになります
PATH環境変数の中身(例: Unix系システム)
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
※各ディレクトリはコロン(:)で区切られています
パスを通すとは?
「パスを通す」とは、プログラムの実行ファイルが存在するディレクトリをPATH環境変数に追加することを意味します。これにより、ディレクトリを明示せずにプログラムを実行できるようになります。
具体例
実行可能ファイルのあるディレクトリが /usr/local/myapp/bin だと仮定
このままだと、次のようにフルパスを指定しないと実行できません。
/usr/local/myapp/bin/myapp
しかしパスを通すことで、単に myapp
と入力するだけで実行可能になります
パスを通す際はこのように書くことでPATH環境変数に追加することができます
export PATH=$PATH:/usr/local/myapp/bin
パスを通さないと困ること
プログラムが実行できない
前述の通り、パスを通さないと実行可能ファイルのフルパスを毎回指定しなければならないため、手間が増えます。
特に複数のプログラムを組み合わせるスクリプトでは、各プログラムのフルパスを書く必要が出てきます。
コマンドが見つからないエラー
コマンドが存在していても、PATHに含まれていない場合、次のようなエラーが発生します
myapp: command not found
おそらく環境構築時によく見かけるエラーではないでしょうか。
このエラーが出た場合はまずパスが通っているか疑うのが良いかと思います
実際にパスを通す方法
一時的にパスを通す
シェルセッション内でのみ有効。セッション終了時にリセットされるため、次回新たにシェルを起動した際には元に戻っている
export PATH=$PATH:/path/to/directory
永続的にパスを通す
こっちの方がよく使います。
シェルの設定ファイルを編集して永続的に設定します。
Bashの場合
- ~/.bashrc または ~/.bash_profile を開き、下記を追加
export PATH=$PATH:/path/to/directory
- 設定を反映する
source ~/.bashrc
Zshの場合
- ~/.zshrc を編集し、Bashと同じ手順で追加します
まとめ
パスは、プログラムやファイルの位置を示す「住所」のようなもの。
パスを通すことで、プログラムをフルパスを指定せず簡単に実行することができるようになります。
command not found
に出会えたらまずは出会いに感謝し、落ち着いてパスを通すようにしましょう。