37238
Python で Graphviz を使おうとしたところ、

> ExecutableNotFound: failed to execute ['dot', '-Tsvg'], make sure the
> Graphviz executables are on your systems' **PATH**

というエラーが出ました。このエラーは[解決した](https://ja.stackoverflow.com/q/37128/19110)のですが、結局エラーの最後に書いてある
PATH というのが何なのか分かりませんでした。

PATH とは何ですか？
CC BY-SA 3.0
2017-08-16T03:20:07.617
37237
2018-06-05T04:38:34.017
2018-06-05T04:38:34.017
19110
19110
question
bash shell
PATH とは何ですか？
## 解説

`$PATH`
というのは、シェルの[環境変数](https://ja.wikipedia.org/wiki/%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0)の1つです。

シェルから実行可能ファイルを実行する際、そのファイルがどこにあるのかを探すために使われるのが `$PATH` です。コマンドサーチパスとも呼ばれます。

## 具体例

たとえば、`dot` コマンドを実行するときを考えてみます。  
私の環境では、このコマンドは `/home/nek/anaconda3/bin/dot` にあります。

```

    $ type dot
    dot は /home/nek/anaconda3/bin/dot です
    
```

シェルで `$ dot -V` と実行させようとしたとき、その `dot`
というファイルがどこにあるのかを探さなければいけません。このときシェルは、`$PATH`
に含まれているファイルパスを順番に探していくことになっています。私の環境では `$PATH` に `/home/nek/anaconda3/bin`
が含まれているため、シェルは `dot` を見つけることができます。

```

    $ printenv PATH
    /home/nek/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    $ dot -V
    dot - graphviz version 2.38.0 (20140413.2041)
    
```

`$PATH` には複数のファイルパスがコロン `:` を区切り文字にして入っていることに注意してください。  
逆に、`$PATH` に `/home/nek/anaconda3/bin` が含まれていない場合シェルは `dot` を見つけることができません。

```

    $ # PATH から /home/nek/anaconda3/bin を除いた上で dot を実行してみます
    $ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin dot -V
    bash: dot: そのようなファイルやディレクトリはありません
    
```

[今回のご質問](https://ja.stackoverflow.com/q/37128/19110)の場合、そもそも `dot`
自体がインストールされていなかったため、「PATH から見える場所に `dot` が無い」というエラーが出ていたわけです。

## 参考

このことは、bash のマニュアルの
[3.7.2](https://www.gnu.org/software/bash/manual/bash.html#Command-Search-and-
Execution) や [5.1](https://www.gnu.org/software/bash/manual/bash.html#Bourne-
Shell-Variables) に書かれています。

また、日本語で解説した記事がいくつかありました。

  * [Linux入門 ~「パスを通す」とは~](http://qiita.com/Naggi-Goishi/items/2c49ea50602ea80bf015) \-- Qiita
  * [PATHを通すために環境変数の設定を理解する (Mac OS X)](http://qiita.com/soarflat/items/d5015bec37f8a8254380) \-- Qiita
  * [パスについて (3) コマンドサーチパス](http://macwiki.osdn.jp/wiki/index.php/UNIX%E5%85%A5%E9%96%80#.E3.83.91.E3.82.B9.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6_.283.29_.E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.E3.82.B5.E3.83.BC.E3.83.81.E3.83.91.E3.82.B9) \-- Mac Wiki
CC BY-SA 4.0
2017-08-16T03:20:07.617
37238
2018-06-05T04:37:31.833
2018-06-05T04:37:31.833
19110
19110
37237
answer