[Mac]環境変数PATHの設定・変更・追加・確認・順番入れ替えの方法

mac path 環境変数

 

 

こんにちは。ナガオカ(@boot_kt)です。

 

Macでプログラミングするための開発環境を作る際、環境変数やPATHが出て来ますよね

よく分からないけどネットで検索してその通りに設定してうまく動くようになったけど・・・、

結局環境変数とかPATHとかってなに?????

って人も多いのではないでしょうか

この記事では、環境変数と環境変数のPATHを説明しています

Macで開発環境を作るなら環境変数やPATHの知識は必須です!!
(LinuxやWindowsでも環境変数の知識は必須ですよぉ~)

この記事では環境変数PATHの事を説明しますね

 

 

 

 

 

環境変数ってなに?

環境変数を一言で言うと、コンピューターの中にあるメモ帳みたいなものです

全てのアプリケーションから参照することができるメモ帳と思ってください

環境変数という言葉がなんか難しそうですけど、そんな複雑に考えなくて大丈夫です
ホントにただのメモ帳と思ってください
忘れないように書き留めているメモ帳みたいなもんです


●コンピューターを使う上で必要な情報を

●環境変数としてコンピューターの中に置いておけば、

●いつでも誰でも必要な情報を取り出せるよね、

っていう感じのものです

 

 

環境変数については、MacもLinuxもWindowsも全て考え方は同じです

 

基本的にはこの意識(←環境変数なんてメモ帳みたいなもんだ)だけ持って入れば充分です

更に詳しく知りたい場合はWikipedia見てください

 

自分のMacの中に存在している環境変数を見るには?

環境変数はたくさんあります
PATHだけではありません

MacやLinuxは、ターミナルでprintenvと打ってみてください
Windowsは、コマンドプロンプトでsetと打ってみてください

たくさん出てきますよね

僕の環境ではこれだけ出てきます

 

Macの場合


> printenv
TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/_89oj32ouro2jr2eoore2oiioe2rorjoi/R/
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.eojeYiJIjU/Render
TERM_PROGRAM_VERSION=361.1
USER=MyUser
PATH=/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/MyUser/.rbenv/shims:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
PWD=/Users/MyUser
LANG=ja_JP.UTF-8
XPC_FLAGS=0x0
RBENV_SHELL=bash
XPC_SERVICE_NAME=0
SHLVL=1
HOME=/Users/MyUser
LOGNAME=MyUser
_=/usr/bin/printenv

 

Windowsの場合


> set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\MyUser\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=MYMACHINE
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Users\MyUser
LOCALAPPDATA=C:\Users\MyUser\AppData\Local
LOGONSERVER=\\MYMACHINE
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\MyUser\AppData\Local\Temp
TMP=C:\Users\MyUser\AppData\Local\Temp
USERDOMAIN=MYMACHINE
USERNAME=kn
USERPROFILE=C:\Users\MyUser
windir=C:\Windows
windows_tracing_flags=3
windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log

 

環境変数のPATHについて説明するよ

ここからはPATHについて説明します

環境変数はたくさんあるので全てを説明するとエライコッチャ状態になります
一番よく使うPATHだけ説明しますね

環境変数を理解するには、まずPATHから入るといいでしょう

 

まず、コマンドって何なの?

ターミナルで打つコマンド、「コマンド」「コマンド」ってよく言いますが、

コマンドの正体って一体なんなの?

って思いませんか?

 

答えは・・・

 

ただの実行ファイルです

 

 

● スマホで言えばアプリです

● Windowsで言えばEXEファイルです

● Linuxで言えば実行ファイルです

 

グラフィカルな画面がなくて、
ターミナルで使える実行ファイルを、

コマンドと呼んでいるだけです

 

もうちょいちゃんと言うなら「命令」でしょうし、そう説明している本や記事が多いでしょうけど、それだと結局正体分からないないですよね

命令と言っても、アプリ(実行ファイル)と考える方がスッキリ理解しやすいかと思います

コマンドも誰かが作ったアプリ(実行ファイル)なんですよ

もちろん自分でコマンドを作ることも可能です

 

合わせて読みたい
自分でコマンドを作ることについて、Windowsの場合ですけど、考え方は同じですのでこちらを参考にどうぞ
>> ワイのWindowsにも touch コマンドがやってきたで!ヤァ!ヤァ!ヤァ!

 

コマンド名だけで実行できちゃうのはなんでなの?

ターミナルでコマンド名(実行ファイル名)を打つとその実行ファイルが実行されます

でもですね、よく考えてみてください

 

ターミナルで打つのはコマンド名(実行ファイルの名前)だけですよね

コマンドを実行させるためには、本当はファイル名だけじゃなくフルパスを書く必要があるんですよ

 

例えば、コマンドがhogehogeの場合、

  • MacやLinuxなら、/usr/local/bin/hogehoge
  • Windowsなら、C:\users\username\myapp\hogehoge.exe

という感じで打たないと、本当は実行できないんです

 

でも、実際のところコマンド名(実行ファイル名)だけで実行できますよね

 

ってことは、HDD/SSDの中からいちいち検索してる!?

いや、そんなことを毎回すると時間かかりすぎる・・・

 

じゃ、どこかに「コマンドの居場所」を書いてるのかっ!?

そうです、どこかにコマンドの居場所を書いてあるのです

 

そのどこかが環境変数(のPATH)なのです

 

以下のコマンドをターミナルで打ってみましょう(PATHは大文字)

※大文字小文字に注意

Windowsの場合は、

もしくは

※大文字小文字は不問

こんな感じのが表示されるでしょう

/Users/myuser/.rbenv/shims:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

「:」は単なる区切り文字です
分割してみましょう

/Library/Frameworks/Python.framework/Versions/3.5/bin
/Users/simauma/.rbenv/shims
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

これらはディレクトリ(フォルダ)です

居場所の分からないコマンドを実行させるとき、OSはこのディレクトリを上から順番に探してくれます

目的とするコマンドが見つかったらそこで実行です

全部のディレクトリを探しても見つからなかったら、command not foundというエラーが出ます(もちろん何も実行されない)

 

んで、、、、、

 

もしも、目的とするコマンドが複数の違う場所にあったら?

 

 

 

先に見つかった方を実行します

 

whichコマンドを知ろう
当然ですけど、echoというコマンドは実行ファイルです

ターミナルで

と打ってみてください

echoの居場所がわかります

 

whichコマンドは、いろいろなコマンドの居場所を教えてくれるコマンドです

ターミナルで、以下のように打ってみてください

それぞれの実行ファイルの場所が出てくるはずです

※PATHに登録されているディレクトリに存在している実行ファイルやコマンドであれば場所が表示されます

 

whichコマンドも実行ファイルなので、

と打ってみてもいいです

※Windowsではwhereコマンドになります

 

最新バージョンをインストールしたのに、なぜか古いバージョンのままってことがあるよね?

よくあるのが、最新版をインストールしたのに、古い方が動いて最新版の方が動かない!というトラブル

これは、

  1. 最新版と古い方が別々の場所にインストールされている
  2. 古い方が入っているディレクトリが、環境変数PATHで先に設定されている

↑ってのが原因であることが多いです

じゃぁ、それを解決するためには環境変数PATHに登録するディレクトリの順番を入れ替えればいいってこと?

YESです!

 

 

広告




 

環境変数PATHの書き換え方

簡単編

環境変数PATHに登録するディレクトリの順番を入れ替えるには、以下のどちらかのファイルを書き換える(or 追記)が必要です
※よく分からない人は、ファイルの最後に追記がいいでしょう

 

全てを細かく説明すると分からなくなると思いますので、簡単に説明します

  1. PATHへの設定コマンドを作る
    仮に、/usr/hoge/banが先に登録したいディレクトリだとします
    以下のようなコマンドを、エディタとかに書きます

    export PATH=/usr/hoge/ban:$PATH

  2. 書いたコマンドを以下のどちらかのファイルに追記します
    ※もしそのファイルが無かったら、作ればいいよ

    • .bash_profile
    • .bashrc
  3. 追記の方法
    • viとかemacsが分かる人はそれで書き換えてください
    • viとかemacsが分からない人は、ターミナルで以下のどちらかを打ってください
      • echo 'export PATH=/usr/hoge/ban:$PATH' >> .bash_profile
      • echo 'export PATH=/usr/hoge/ban:$PATH' >> .bashrc

      細かい説明は避けたいけど・・・・
      .bashrcに記述する場合、.bash_profileから.bashrcが呼ばれている必要がある・・・

  4. 追記された事の確認
    more .bash_profile
    more .bashrc

    moreコマンドで、指定したファイルの中身が見られます

     

    表示はcatコマンドじゃないの?
    ようく表示にcatコマンドを使いますが、別にそれでも問題ないんですが、catコマンドはファイルを連結するためのもの
    コマンド名の由来がconcatとかconcatenateだったりするので、本当の意味では、ファイルの中身を見るのにcatコマンドを使うべきではない

    ・・・という感じで人によっては怒られることがあるので、moreコマンドにしています
    catコマンドでもファイルの中身を見られるのは見られますよ

 

余裕ある人編

ディレクトリの/etc/paths.d/etc/manpaths.d
ファイル/etc/paths/etc/manpaths

↑のどこかにPATHに設定しているディレクトリが列挙されています
これを書き換えればOKです

 

 

環境変数PATHを書き換えた後、有効にするためには?

環境変数PATHを書き換えた後それを反映させるには、以下のいずれかを実行します

  • ターミナルを再起動
    一旦終了させて、再度起動
    commandNで新規のターミナルウィンドウを表示でもOK
  • ターミナルでsourceコマンド実行

    ※PATHの設定を変えた時、これではうまくいかない場合があるので、ターミナルを再起動する方をオススメします

  • 環境変数PATHの確認

    で表示される内容を見て、ディレクトリの順番が思ったような順番になっているかを確認する

 

広告




 

 

まとめ

  • コマンドとは、結局は実行ファイルのこと
  • フルパスじゃなくて実行ファイル名だけで実行させるには環境変数のPATHにディレクトリを設定しておく必要あり
  • PATHの設定は.bash_profile.bashrcで調整
  • PATHへの設定順序は/etc/paths等で調整
  • PATHの設定を変えたら、ターミナルを再起動

 

さいごに、

環境変数は何に役立っているのか分からない人が多いかも知れませんが、最低限PATHは知っておくべきです

Macは簡単・使いやすい・優れていると言う人が多いですが、実際のところUNIX系OSですので全くの無知ではきちんと使うことはできません

また、Macだと開発環境を作り易いという評価があります
僕もそう思います(と言っても、Windowsで開発環境を作りにくいとは全く思わないですけど・・・)
でもそれはUNIX系OSに対しての知識があってこそです

今回は環境変数だけ解説しましたが、OSの仕組み、UNIX系OSの仕組みをしっかり勉強することをオススメします

今後、シェルやコマンドについて勉強するには、

こういった本で勉強することをオススメします

 


 

プログラミング のレッスンに興味がある方、レッスン内容を聞いてみたい方、なんなりとお問い合わせください。
無料体験レッスンもありますのでお気軽にどうぞ!!!

 

 

mac path 環境変数

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。