今更すぎるけど環境変数について少し深掘り。
環境変数とは
環境変数とは、OSが設定値などを永続的に保存し、利用者や実行されるプログラムから設定・参照できるようにしたもの。
「環境変数」って言うと一般的にローカルのOSに対しての環境変数をさすことが多いと思うけど、例えばDockerで仮想環境持ってたりしたらDockerの中でも環境変数があるし、アプリケーション内、サーバー内にもそれぞれ存在するので、それぞれの環境で設定することができる。
環境変数の一覧を確認
printenv
コマンドでローカルに設定されている環境変数の一覧を確認することができる。
$ printenv ・ ・ SHELL=/bin/bash CLICOLOR=1 USER=hako COMMAND_MODE=unix2003 LSCOLORS=gxfxcxdxbxegedabagacad PATH=/usr/local/opt/imagemagick@6/bin:/usr/local/opt/mysql@5.7/bin:/Users/hako/.rbenv/shims:/Users/hako/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin PWD=/Users/hako LANG=ja_JP.UTF8 RBENV_SHELL=bash HOME=/Users/hako LOGNAME=hako OLDPWD=/Users/hako/Practice
(OLDPWDとかいうちょっと面白い変数を見つけてしまった、、 )
環境変数の値を確認
特定の環境変数の値を確認したいときは
$ echo $PATH /usr/local/opt/imagemagick@6/bin:/usr/local/opt/mysql@5.7/bin:/Users/hako/.rbenv/shims:/Users/hako/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
先頭に$をつける。
ちなみにPWD
ってのがあったので使ってみたけど
$ echo $PWD /Users/hako/Project $ pwd /Users/hako/Project
結果は同じ。二つの違いはと言うと
$ echo $PWD
環境変数$PWD
に入っている/Users/hako/Project
を、結果を出力してくれるecho
コマンドで表示。
$ pwd
これ自体が「現在のディレクトリ(/Users/hako/Project
)を出力する」コマンド。
環境変数を設定する
$ export PATH=/usr/bin
環境変数を設定するときは、設定ファイルを開いてわざわざ追加しなくてもexport
で書き込んでくれる。
ただもともとPATH
が存在する場合はこの書き方だと上書きしてしまうので、(変数だから当然か)
PATH
みたいにいくつも変数の値があるようなものは以下の書き方で追加する
$ export PATH=/usr/bin:$PATH
一つだけ追加しようと思って上書きしてしまう現象に注意。
ちなみに
アプリケーションの開発過程で環境変数を設置することたまにあるけど、ローカルの環境変数に定義するよりもアプリケーションに依存させた方が良さそう。
Railsだったらローカルの環境変数に書くんじゃなくてgem入れてアプリケーション内部の.env
に書いた方が、ローカルを汚さずにいられる。
[Ruby on Rails]環境変数の設定方法(.bash_profile、Dotenv-rails) - Qiita
参考
[Ruby on Rails]環境変数の設定方法(.bash_profile、Dotenv-rails) - Qiita