|||||||||||||||||||||

なんぶ電子

- 更新: 

環境変数とパス(Path)

Windows10設定画面

PC用語でパス(Path)といったら、ファイルやフォルダのある場所を指す文字列のことです。

それが、「パス(Path)を通す」という言葉になるとパスの意味あいが若干かわります。筆者自身駆け出しの頃、この「パスを通す」という意味がよくわからなかったのでここに関連が深い環境変数とともに覚書を残しておきます。

環境変数

少し遠回りになりますが、環境変数から把握していた方が理解しやすいと思いますので先にその説明をしておきます。

「環境変数」は文字通り利用環境における変数です。例えばWindowsではTMPという名前の変数に、一時フォルダの場所が格納されています。

この中身を確認するためにはコマンドプロンプトのechoコマンドを使って確認できます。コマンドプロンプトでは、変数を読みだす際は%で囲むというルールがあります。

C:¥Users>echo %TMP%
C:¥Users¥username¥AppData¥Local¥Temp

Power Shellでは、「$Env:tmp」とします。$記号はPowerShellにおける変数を意味します。

C:¥Users>$Env:TMP
C:¥Users¥username¥AppData¥Local¥Temp

WindowsにおいてこのTMP環境変数は、アプリなどが一時フォルダの場所を取得する際に利用されます。コマンドプロンプトやPower Shellから呼び出せたようにアプリからもその値を呼び出すことができます。

ちなみに環境変数と言った場合、多くはWindowsやDebian等のOSのそれを指すことが多いですが、例えばWebのApacheサーバーでも「環境変数」という同様の変数をもっていてこれはOSの環境変数とは別に存在しています。

環境変数におけるPath

その環境変数のひとつとしてPathがあります。この中身を読みだしてみると、今度は複数のフォルダが;(セミコロン)に区切られて出力されます。

C:¥Users>echo %Path%
C:¥Program Files¥Eclipse Foundation¥jdk-8.0.302.8-hotspot¥bin;C:¥Program Files¥ImageMagick-7.1.0-Q16-HDRI;C:¥WINDOWS¥system32;C:¥WINDOWS;C:¥WINDOWS¥System32¥Wbem;C:¥WINDOWS¥System32¥WindowsPowerShell¥v1.0¥;C:¥WINDOWS¥System32¥OpenSSH¥;c:¥nvm;c:¥nvm¥symlink;C:¥Program Files¥Git¥cmd;

;で区切られたすべてのフォルダに関して共通のことですが、このなかにWindowsを使っている方にはおなじみのフォルダである「C:¥WINDOWS¥system32;」フォルダを例に取って説明していきます。

こうしてPathを読みだした際に「C:¥WINDOWS¥system32」が出力されている際、「C:¥WINDOWS¥system32にパス(Path)が通っている」と言います。また環境変数のPathの中に「C:¥sample」フォルダを加えることを「C:¥sampleにパス(Path)を通す」と言います。

Pathが通っている(=環境変数の中にフォルダの場所が記述してある)と、コマンド実行時にそのフォルダの記述を省略することができます。たとえば、C:¥WINDOWS¥system32にはcmd.exeという先ほど利用したコマンドプロンプトのプログラムの本体がいます。通常特定の場所にあるexeファイルを実行するには、プロンプトでそのフォルダ(ここではC:¥WINDOWS¥system32)に移動して実行するか、そうでなければ場所を指定して(C:¥WINDOWS¥system32¥cmd.exe)実行しなければいけません。しかし、C:¥WINDOWS¥system32には、Pathが通っているのでcmd.exeはどのフォルダからでもcmd.exeとするだけで実行することが可能です。

もし、cmd.exeがPathの通っている複数のフォルダに存在した場合は先に記述されている方の場所での実行が優先されます。

パスの通し方(Windows10)

「設定の検索」ウインドウに「システムの詳細設定の表示」と入力して「システムの詳細設定」を表示させます。

Windows10設定画面

「環境変数」のボタンをクリックすると、環境変数の一覧が表示されます。Pathにはユーザー毎のものとPC共通のものがあります。どちらか運用にあった方を選択して「編集」ボタンを押します。

環境変数の設定

Pathの編集画面になるので、追加、修正、削除をして最後に「OK」を押して終了させます。

Pathの編集

ここで登録したPathは再起動後に有効になります。再起動させずにPathにフォルダを加えたい場合はPowerShellから次のように操作します。

PS>$Env:Path += ";C:\Sample"

ここで環境変数のPathに加えた変更は、再起動時にはリセットされます。

もしPowerShellで永続的なパスを設定したい場合はMicrosoft:「about_Environment_Variables」に従ってつぎのようにします。ここではPC共通として設定しています。SetEnvironmentVariableコマンドの実行は管理者権限が必要です。

PS>$currentpath = [Environment]::GetEnvironmentVariable('Path', 'Machine')
PS>$newpath = $currentpath + ';C:\Sample'
PS>[Environment]::SetEnvironmentVariable("Path", $newpath, 'Machine')

パスの通し方(Debian)

Debianでパス(PATH)を通す場合は、/etc/profileに記述します。例として/usr/local/bin/jdk-17+35/に展開されたバイナリ群があるとして、ここにPATHを通してみます。Javaの開発をする方はご存じかと思いますがこのディレクトリはJDKを展開したものです。JDKの場所を示す環境変数「JAVA_HOME」を設定した上で、その場所配下のbinディレクトリをPATHに加えています。

注意したい点は、Windowsでは文字の大文字小文字を区別しませんが、Debianでは区別があります。こちらはすべて大文字のPATHとなることと、区切り文字が;(セミコロン)から:(コロン)になります。

ifの分岐はシステムがデフォルトで作成しているものですが、これで上段が管理者権限の場合のPATH、下段がそれ以外の場合のPATHとなります。

/etc/profile

...
JAVA_HOME="/usr/local/bin/jdk-17+35/"
if [ "$(id -u)" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$JAVA_HOME/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:$JAVA_HOME/bin"
fi
...

Debianにおいて、ユーザー毎の設定ファイルには他に、ユーザーホームの.profileと.bashrcがあると思います。もしユーザー毎に環境変数を変更したいなら、.profileに、(そのようなケースがあるかわかりませんが)bash起動毎に変更したいなら.bashrcにPATHを修正するスクリプトを加えます。システムがこれらのファイルを読み込む順序は、/etc/profile、~/.profile、~/.bashrcとなります。

Debianの場合、即時に反映させたい場合は次のようにします。こちらもコマンドで設定しただけの環境変数は再起動時に消えてしまいます。

PATH=$PATH:/home/user/sample

筆者紹介


自分の写真
がーふぁ、とか、ふぃんてっく、とか世の中すっかりハイテクになってしまいました。プログラムのコーディングに触れることもある筆者ですが、自分の作業は硯と筆で文字をかいているみたいな古臭いものだと思っています。 今やこんな風にブログを書くことすらAIにとって代わられそうなほど技術は進んでいます。 生活やビジネスでPCを活用しようとするとき、そんな第一線の技術と比べてしまうとやる気が失せてしまいがちですが、おいしいお惣菜をネットで注文できる時代でも、手作りの味はすたれていません。 提示されたもの(アプリ)に自分を合わせるのでなく、自分の活動にあったアプリを作る。それがPC活用の基本なんじゃなかと思います。 そんな意見に同調していただける方向けにLinuxのDebianOSをはじめとした基本無料のアプリの使い方を紹介できたらなと考えています。

広告