パスとは
パス(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/bin
を PATH
に追加するのが一般的である。
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