箱のプログラミング日記。

渋谷の自社開発企業でRails書いてます。

環境変数についておさらい

f:id:y_hakoiri:20191102121842j:plain

今更すぎるけど環境変数について少し深掘り。

環境変数とは

環境変数とは、OSが設定値などを永続的に保存し、利用者や実行されるプログラムから設定・参照できるようにしたもの。

引用元:環境変数とは - IT用語辞典 e-Words

「環境変数」って言うと一般的にローカルの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

参考

新しいLinuxの教科書

環境変数とは - IT用語辞典 e-Words

Pathを通すとは、環境変数とは - Qiita

[Ruby on Rails]環境変数の設定方法(.bash_profile、Dotenv-rails) - Qiita