プログラム2018.10.24000シェアつぶやくはてブあとで会社でデザイナーさんの相談窓口を担当してた時期がありました。(デザイナーさんでもコマンドを使ってくれ、という会社だったため)その時に他の人は実行出来ても自分のMacだと実行出来ない言われた通りにやっても特定のコマンドのバージョンが変わらないという相談を受ける事が多々ありました。最初のうちは自分が無知過ぎて、使用しているコマンド(例えばnpmやnodeなど)のバージョンが違うだけなんじゃ?ぐらいに思っていたんです。慣れてくるとPATHの読み込む順が違ったため、という事が結構あったんです。そこで、PATHて何だ?そもそも環境変数てなんだ?と思い調べてみる事にしました。この記事はまず「Macの環境変数について」プログラム初心者の人でも分かるように書きます。PATH="$HOME/.rbenv/bin:$PATH"環境変数とは環境変数とは、OSが使用出来る変数の事です。OS全体から参照出来る変数なので、そのMac内の全てのアプリケーションから参照する事が出来る値になります。そのMac内であればどんなプログラムやターミナル上からでも読み込む事が出来る、超ポピュラーな変数と思ってもらえれば良いかと。・_=/usr/bin/printenv見たことある気がする単語からないものまで、様々な文字列がダーッ!と表示されたと思います。上記の場合COLORFGBG・EDITOR・HOMEのようなワードが全て環境変数と呼ばれるものです。いう値が入っています。環境変数を使用する環境変数をターミナルで試したい、シェルで使いたい、という時は環境変数の前に「$」を付ける事で使用する事が出来ます。・これを見て「変数」という表現がしっくりきた人もいるのではないでしょうか?また、シェルで使う時は「$」を付けると書いたように、他の言語では別の書き方をして参照します。Rubyで環境変数HOMEを使う場合以下のように書きます。ENV['HOME']""/Users/yuu"環境変数を設定する環境変数は自分で好きなように設定する事が出来ます。一時的・永続的に環境変数を設定する場合もexportというコマンドを使います。$SHOPPING_SITEAmazonSHOPPING_SITEという環境変数にAmazonを設定しました。Amazonで良く買い物をするヤツなんでしょう(私です)環境変数はプロセスと子プロセスにしか反映されないため、Mac(というかUnix系)ではWindowsとは違い、環境変数は消えるものです。exportで設定した変数も、あくまでそのプロセスと子プロセスにしか反映されません。$SHOPPING_SITE永続的に環境変数を設定するでは永続的に環境変数を設定するにはどうしたら良いかというと、シェルの設定ファイルにexportを使って環境変数を設定します。使用しているシェルによって記載する設定ファイルが変わります。zshrcを読み込み直すと、環境変数SHOPPING_SITEが使用出来るようになっています。$SHOPPING_SITEAmazon設定ファイルと呼ばれる~/.bash_profileや~/.zshrcはターミナルを起動する度に読み込まれるため、ターミナルを再起動しても今度はSHOPPING_SITEに値が設定されています。$SHOPPING_SITEAmazon環境変数に値を再設定(上書き)するSHOPPING_SITEに値を上書きするにはどうしたら良いか?これはもう1度同じように~/.zshrc内でexportを使って値を設定すれば出来ます。~/.zshrcで以下のように編集します。$SHOPPING_SITERakuten上書き完了です。PATHを理解するためにここまでで環境変数に値を設定する方法やその環境変数を使用するイメージが掴めてきたかなと思います。このような書き方を少しずつ紐解いていきます。設定ファイル内で環境変数の変数展開を試す設定ファイル内での変数展開を理解するためにSHOPPING_SITEに値を上書きする際に使用した書き方を少し変更してみます。イメージとしてはPATHの設定をする時に近い感じで記載してみます。$SHOPPING_SITERakuten:Amazon2回目のexport時に1回目で設定した変数SHOPPING_SITEが展開されているのがわかります。このようにシェルは「""」(ダブルコーテーション)内で$HOME・$SHOPPING_SITEのように記載するとその変数を展開する事が出来ます。$PATH/Users/yuu/bin:sbin:binこのようになります。PATH="$HOME/.rbenv/bin:$PATH"は、この記述より上で設定したPATHの前に$HOME/.rbenv/bin:を追加する書き方になります。書きましたがPATHの本質部分となる、なんで2回目以降の設定をする際に$PATHの前に記載してんの?なんで「:」を使うの?は次の記事に記載します。あとがき環境変数なんてそんな大したもんじゃない、ぐらいの浅い気持ちで過ごしていました。コマンドを実行する上できちんと理解した方がいいんだなとプログラム始めて6年目ぐらいで気付くという。プログラム2018.10.27スポンサーリンクYuu昔は作曲家、今はプログラマー。iPhoneアプリやWebアプリを作ってます。犬と猫と紅茶が大好き。将来紅茶を片手に犬と猫と一緒に住むのが夢です。12c試験の感想と勉強方法2015.11.1154,778viewsEclipseでMavenを導入して、ライブラリを使用する方法2015.9.1639,980viewsjQueryで2つのドロップダウンリストを連動させる方法2015.4.2337,706views作品Yuuの音楽サイト自分の曲を紹介しているポートフォリオサイト。作品ページへ配色Webアプリ「色のカードを並べる感覚で配色が出来る」をコンセプトに作成しました。「暖かい」「冷たい」などイメージから配色を行う事が出来ます。内部的にはjsで制御しています。