プログラム開発環境を作るときの基本的な作業に環境変数の設定があります。俗に『PTTHを通す』といいます。
その設定方法をWindows, Mac, Linux, Unixごとに分かりやすくかんたんに説明します。
説明がかんたんではなくて本当に作業がかんたんです。気軽に見てください。
環境変数のPATHとはなにか?
まずは環境変数とは何か? から。
環境変数は、OSやOSにインストールされたアプリケーションが使う定数のことです。大文字で書くのが一般的です。
何回もいろいろなところで使い、いちいち値を定義するのがめんどうなのでOS環境の変数として定義します。
OSやアプリケーションは必要になったら環境変数から値を取り出して参照します。
環境変数のなかでも特殊なPATH
その環境変数のなかでPATHはちょっとちがいます。PATHはどの場所からでも実行したいプログラムのコマンドを定義します。
(どのディレクトリからでも実行できるコマンド)
たとえば、"php"というPHPを実行するコマンドは、環境変数PATHに追加していないとき、
php
と実行しても、
そんなコマンドは知らない!
と言われてしまいます。
phpコマンドを実行するためには、
/usr/bin/php
としなければなりません。/usr/bin/phpは、phpコマンドがインストールされているフルパスです。
/usr/binはUnix, Linux系OSの、アプリケーション実行コマンドのデフォルト・インストール先で、システム環境変数に追加されています。
じっさいは、/usr/binにあるphpコマンドはPATHを変更しなくても"php"で実行できます。
PATHはコマンドのショートカット
これはめんどうです。コマンドを実行するたび長いコマンドを入力することになるので。
このめんどくささを解決するのがPATHです。PATHの値に"/usr/bin/"を追加することで、
php
というコマンドがどの場所からでも実行できるようになります。
プログラム言語に関係なく、
PATHを通す
という作業をするのはこのためで、
- java
- php
- python
など、プログラム開発ではコマンドの実行を必ずします。そして、プログラムのソースファイルは使う人が自由にどこにでも置いて作業します。
その自由に置かれたソースの場所からかんたんにコマンドを実行するためにPATHはあります。
環境変数にはOS全体で使うシステム環境変数と、特定のユーザーしか使えないユーザー環境変数があります。
システム環境変数はすべてのユーザーが使うことができます。
環境変数を参照するときWindowsでは、
%PATH%
Mac, Linux, Unixでは、
$PATH
というルールがあります。
Mac, Linuxのパス設定
PATHの設定の方法はWindowsとそれ以外に分かれます。
じつはmacOSはUnixをもとに開発されました。LinuxもUnixに影響されてつくられたOSなのでとても似ています。
だからMacとLinuxは同じ作業になります。
Linuxの名前の由来は『like a Unix(Unixのような)』。Unixのバッタモンとして始まって、いつのまにか本家のUnixを超えるほど広がっていきました。
MacとRedhat系LinuxのPATH設定
MacとRedhat系Linux(CentOS, Fedoraなど)は内部でbashというコマンドの集まりでできています。
PATHの設定の方法はbashのルールにしたがいます。編集するファイルはひとつで .bash_profile です。
.bash_profileは、rootユーザーとそれぞれのユーザーのホームディレクトリにある隠しファイルです。
隠しファイルは lsコマンドのaオプションをつけないと見えません。
ls -altr
rootユーザーの .bash_profile はシステム環境変数でそのほかのユーザーのファイルがユーザー環境変数の設定です。
rootユーザーのファイルはセキュリティを考えるとほとんど使いません。ユーザー環境変数に追加しましょう。
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
.bash_profileには、すでにこのように定義されています。
PATH=$PATH:
『すでに定義されているPATHに追加する』という意味で、コロン(:)は区切り文字です。
追加するときは、もともとあったものを残して追加します。
もとの記述を削除しないように注意してください。なにかしら異常が発生するアプリケーションが出てきます。
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/shell
"PATH=$PATH:"は、システム環境変数をユーザー環境変数にコピーしています。
その後ろから書いてあるものがユーザー環境変数オリジナル。
ファイルの編集はこれだけです。最後に編集した内容をOSに反映させます。
source ~/.bash_profile
sourceコマンドを実行しなくても、ターミナルからログインしなおすだけで反映します。
ただ、sourceコマンドを実行するとターミナルの再ログインはいりません。
Debian系Linux, UnixのPATH設定
Debian系Linux(Ubuntuなど)やUnixは、デフォルトのシェルがbashではありません。
なので、編集するファイルが.bash_profileではありません。.profileになります。
もうひとつ違いがあるとすれば、PATHの定義をダブルクォーテーション(")で囲うことくらいです。
PATH="$PATH:$HOME/.local/bin:$HOME/bin"
bashと同じように『"』で囲わないものもあります。このあたりのルールはもとの定義に合わせてください。
あとはsourceコマンドで .profile を更新して終わりです。
source ~/.profile
WindowsのPATH設定
WindowsはほかのOSと比べて独自の進化をしているので、同じような作業になりません。
Windowsはデスクトップで作業したほうが早いです。というかコマンドで作業をする人はいないです。
まずは、環境変数の編集画面を開きます。
PC(旧マイコンピュータ)の右クリック -> プロパティを選びます。
システムのウィンドウが表示されました。これは、コントロールパネル -> システムでも表示できます。
デスクトップ左下の検索で『システム』と入力して、コントロールパネルのシステムを起動してもいいです。
次に左の『システムの詳細設定』を選びます。
『詳細設定』タブの『環境変数』ボタンを押します。
環境変数のウィンドウが出ました。
ユーザ環境変数のPathをダブルクリックするか、Pathを選んで編集ボタンを押します。
新規ボタンを押してパスを入力すると新しいパスが追加できます。
最後にOKボタンを押して終了してください。
Windowsでの作業は以上です。
昔はPCの再起動が必要でしたが、いまは不要です。コマンドプロンプトを開きなおしたらPATHが通っています。
Windowsだけちょっと違うのがよく見るとわかります。
- 変数名がPATHじゃなくてPath
- 区切り文字がコロン(:)じゃなくてセミコロン(;)
まとめ
PATHの通し方はかんたんです。
Windowsとそれ以外
の2つの方法を覚えておけば、だいたいのOSで作業できます。
それでも、ときおり忘れてしまうぼくが言うのもなんですが...
この記事を一番必要としているのはぼく自身です。
(ごめんなさい。)
win10です。
疑問点が一つあります。
例えば、C:\testにあるhoge.exeにパスを通したいとき、環境変数ウィンドウの新規には
"C:\test" を追加すればよいのか、"C:\test\hoge.exe"を追加すればよいのかどちらなのですか?
返事が遅れました。すいません。
答えは"C:\test"です。
『PATHを通す』は、
『実行プログラムをどの場所(ディレクトリ or フォルダー)からでも実行するため』
なので、実行プログラムのある場所(ディレクトリ or フォルダーのパス)を指定します。
たとえば、hoge.exeを実行したら、プログラム名(hoge.exe)からPATHの設定を見て、
プログラム名の前にPATHの"C:\test"をくっつけて、
C:\test\hoge.exeを実行します。
プログラムを実行するのにフルパス指定はキツイですからね?
Windowsにかぎらず、PATHは『ディレクトリ or フォルダー』のパスです。
理解できました!
プログラムがどこに入ってるかってことを教えるんですね。
ありがとうございます。