パス

パスとは

パス(PATH)とは、コンピューターにあるファイルの住所のことである。コンピューター上にインストールされたソフトウェアを実行したいとき、そのソフトウェアのパス(住所)をコンピューターに教えてから実行する必要がある。

コンピューターにパスを教える方法として、2 通りの考え方がある。1 つは、コンピューターを起動する際(起動直後)に、プログラムのパスを 1 回だけ教えて、コンピューターが動いている間にずっと覚えてもらう方法である。この場合、コンピューターにパスを覚えてもらうために、そのパスをシステム環境変数という変数に追加する必要がある。もう 1 つの方法として、そのプログラムを実行するときにパスを教える方法である。この場合は、コンピューターに覚えさせる必要はないので、環境変数を追加する必要はない。

例えば blastn コマンドを実行する際に、blastn へのパスがすでに環境変数に追加されているならば、次のように実行する。コンピューターが blastn を見たときに、環境変数に追加されたパス一覧から blastn の住所を探し、その住所にある blastn を実行する。

blastn -help

これに対して、blastn へのパスが環境変数に追加されていない場合は、コンピューターが blastn を見たときに、その元プログラムが見つからないために、次のようなエラーが生じる。

blastn -help
# -bash: blastn: command not found

環境変数へ追加されていないときに blastn を使用したい場合は、次のように blastn への住所を直打ちすることで、実行できるようになる。

~/local/bin/blastn -help

パスの追加

Linux と macOS のシステム環境変数は PATH と定義されている。プログラムへのパスを PATH 変数に追加することで、コンピューターが起動時にそのパスを覚えられるようになる。PATH にパスを追加するとき、.profile、.bashrc、.zshrc などのシェル設定ファイルで行う。ファイルは様々あるが、ログインシェルが bash であれば .bashrc ファイルを、zsh であれば .zshrc ファイルを開いて、パスの追加を行う。

パスの追加は、基本的に、.bashrc または .zshrc を開いて、最後の行に次の 1 行を追加すればよい。なお、/path/to/bin は自作プログラムが含まれているディレクトリである。このように、パスを追加するとき、/path/to/bin/blastn のようなフルパスを追加するのではなく、そのプログラムが含まれているディレクトリ /path/to/binPATH に追加するのが一般的である。

export PATH=${PATH}:/path/to/bin

複数のパスを追加する場合は、コロンでつないで続けて 1 行で書いてもよく、複数行に書いても良い。

export PATH=${PATH}:/path/to/bin1:/path/to/bin2
export PATH=${PATH}:/path/to/bin3

PATH 変数の修正が完了してから、ファイルをを保存してから、コンピューターをログインし直すと設定が反映されるようになる。

パスの優先順序

PATH 変数に追加されたパスには優先順序がある。例えば、blastn/path/to/bin1/blastn/path/to/bin2/blastn の 2 箇所にいんすとされているとする。この 2 箇所を次の順序で PATH 変数に追加されてたとする。

export PATH=${PATH}:/path/to/bin1:/path/to/bin2

このとき、blastn コマンドを実行すると、/path/to/bin1/blastn の方の blastn が実行される。このように、PATH に追加されているパスのうち、先頭にあるものが優先される。そのため、自分で新しいバージョンのプログラムを追加したのに、実行してみると古いバージョンのプログラムが実行されるような現象があれば、システムに古いバージョンのプログラムがインストールされていることに起因する可能性が高い。

自分で追加したパス以外にどのようなパスが存在するのか、それらのパスがどのような順序で並んでいるのかを確認する場合、次のようにして PATH の内容を出力してみるとよい。

echo $PATH
# /home/user/local/bin:/opt/anaconda3/bin:/opt/anaconda3/condabin:/home/user/local/bin/local/bin
  • ~/.zshrc