環境変数について

環境変数とは

環境変数とは、OSが設定値などを永続的に保存し、利用者や実行されるプログラムから設定・参照できるようにしたもの。プログラムの実行時などに必要となる、利用者やコンピュータごとに内容が異なる設定値などを記録するために用いられる。

<参照:環境変数【environment variables】

言い換えると、環境変数とはシェルから起動されたすべてのプロセスに有効な変数のことだ。環境変数は、いったんシェル変数に値を代入して、exportコマンドによって設定する。例えば、環境変数PAGERにlessを設定するには以下のようにする。

<参照:環境変数を設定するには

シェルとは?

それは、OSとアプリケーションの間に立ってユーザからの要求をシステムに伝えるためのユーザインターフェースで、要はコマンドを入力することで動くプログラムのことをシェルと言う。

人間がOSのカーネル(核)を直接いじって致命的なエラーを出さないように、貝の殻のように『OSを包み込んで守る』という役割からシェルと呼ばれているらしい。

シェルスクリプトとはシェルが解釈できるコマンドを並べたファイルのことでシェルとは別物。シェルスクリプトを省略してシェルと呼ばないように注意!

<参照:シェルってなに?bashとzsh、自分のMacはどっちを使ってるの?

シェル変数とは?

シェル変数は、シェルスクリプト(連載ステップ・バイ・ステップ・シェルスクリプト参照)で使用することの多い変数だ。例えば、bashのプロンプトを変更するにはで紹介したPS1などもシェル変数の一種だ。シェル変数は、シェルスクリプト内だけでなく、コマンドラインでも設定したり削除したりできる。

<参照:シェル変数を定義したり、削除するには

maczshコマンドの場合

環境変数には定義済みの変数があり、その中でも重要なのが、パスが登録されている$PATHになる。以下のコマンドで、どんなパスが登録されているか、ターミナルで確認できる。

echo $PATH

すると

/Users/ventus_akaishi/.nodenv/shims:/Users/ventus_akaishi/.rbenv/shims:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/ventus_akaishi/.yarn/bin

と言う感じで、OSに設定されている環境変数へのパスが出てくる。

インストールしたプログラム言語のアプリケーション(?)(例えばRubyとかPythonとかyarnとか)で、ドキュメントで書かれているコマンドがターミナルで実行できなかったりする場合に、環境変数にパスを追加していくことになる。

macの場合は.zshrcファイルに追記していくことになる。

現状の中身は以下だ。

eval "$(~/.rbenv/bin/rbenv init - zsh)"
eval "$(nodenv init -)"
export PATH="$PATH:`yarn global bin`"

今定義しているのはこの3つ。

注目したいのはこれ。

export PATH="$PATH:`yarn global bin`"

基本的に、今後何か同様に環境変数へのパスの追加については、macでは、この書き方で良いっぽい。

<参考:環境変数とは?$PATHの意味や使い方、通す方法を解説

<参考:5 Proven Ways to Fix Zsh Command Not Found Error on macOS [Bash & Zsh]

<参考:yarn global add でインストールしたコマンドが実行できなかった場合...

<参考:Yarnやっていきはじめ

<参考:Pathを通すとは、環境変数とは

Node.jsで環境変数を利用する方法

https://www.twilio.com/ja/blog/working-with-environment-variables-in-node-js-html-jp

https://zenn.dev/dove/articles/5fd7926e7da949

https://nodejs.org/api/synopsis.html

https://12factor.net/ja/codebase

https://magazine.techacademy.jp/magazine/16243

https://maku77.github.io/nodejs/env/environment-variable.html

https://maku77.github.io/nodejs/env/dotenv.html