質問: Python で Graphviz を使おうとしたところ、 > > ExecutableNotFound: failed to execute ['dot', '-Tsvg'], make sure the Graphviz executables are on your systems' **PATH** > > > というエラーが出ました。このエラーは解決したのですが、結局エラーの最後に書いてある PATH というのが何なのか分かりませんでした。 PATH とは何ですか?
回答: 解説 `$PATH` というのは、シェルの環境変数の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: そのようなファイルやディレクトリはありません ``` 今回のご質問の場合、そもそも `dot` 自体がインストールされていなかったため、「PATH から見える場所に `dot` が無い」というエラーが出ていたわけです。 参考 このことは、bash のマニュアルの 3.7.2 や 5.1 に書かれています。 また、日本語で解説した記事がいくつかありました。 * Linux入門 ~「パスを通す」とは~ -- Qiita * PATHを通すために環境変数の設定を理解する (Mac OS X) -- Qiita * パスについて (3) コマンドサーチパス -- Mac Wiki