環境変数

16.2. 環境変数

シェルに限らず、全てのプログラムは環境変数と呼ばれるさまざまな変数を参照します。環境変数の値によって、シェルの動作を変えることができます。

環境変数の見方 #

まず、環境変数の一覧を見るには printenv コマンドを用います。

printenv
TERM_PROGRAM=Apple_Terminal
PYENV_ROOT=/usr/local/brew/opt/pyenv
SHELL=/bin/bash
TERM=xterm-256color
TERM_PROGRAM_VERSION=440
USER=1234056780
PATH=/usr/local/brew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/home/hwb/bin:/Library/TeX/texbin:/opt/X11/bin:/Library/Apple/usr/bin
__CFBundleIdentifier=com.apple.Terminal
PWD=/home/1234056780
LANG=ja_JP.UTF-8
PYENV_SHELL=bash
SHLVL=1
HOME=/home/1234056780
LOGNAME=1234056780
_=/usr/bin/printenv

1行が一つの変数に対応し、等号=の左が変数名、右が値です。たくさんの表示がありましたが、 現時点ではたくさんある程度の把握で十分です。例示の 1234056780 の部分は架空の UTokyo ID です。

変数名の前に $ をつけることで特定の環境変数の値を参照することができます。echo コマンドのパラメータにするこ とでこの値を見ることができます。

LANG という環境変数に注目します。これは言語を設定します。

echo $LANG
ja_JP.UTF-8

ja_JP.UTF-8 は日本語を UTF-8 の文字コードで利用する意味です。 環境変数の値を変更すると、シェルから起動した各プログラムの動作に影響します。

LANGを変更した実行例
LANG=es_ES.UTF-8 cal
     Marzo 2023       
do lu ma mi ju vi sá  
          1  2  3  4  
(以下略)
LANG=ko_KR.UTF-8 cal
      3월 2023         
일 월 화 수 목 금 토  
          1  2  3  4  
(以下略)
LANG=tr_TR.UTF-8 cal
     Mart 2023        
Pa Pt Sa Ça Pe Cu Ct  
          1  2  3  4  
(以下略)
LANG=sv_SE.UTF-8 cal
     Mars 2023        
Sö Må Ti On To Fr Lö  
          1  2  3  4  
(以下略)
LANG=zh_CN.UTF-8 cal
      三月 2023         
日 一 二 三 四 五 六  
          1  2  3  4  
(以下略)
LANG=zh_TW.UTF-8 cal
      3月 2023         
日 一 二 三 四 五 六  
          1  2  3  4  
(以下略)

(中国語圏では曜日を 星期1のように数字で数えます)

環境変数の設定 #

環境変数の設定には export というコマンドを用います。 以下を実行すると以降のコマンドの応答が英語になります。

export LANG=en_US.UTF-8

この設定は現在のシェルのみに有効です。すべてのシェルで環境変数に特定の初期値を設定する方法は、 16.7. シェルの初期設定 のところで学びます。

よく用いる環境変数をいくつか書いておきます。

変数名 意味 関連項目
HOME ホームディレクトリの絶対パス名 16.6.1. パスの表記
PATH コマンドの検索パス 16.6.4. パーミッションと実行ファイル
EDITOR 用いるエディタの種類
PAGER 用いるページャの種類
LANG 用いる言語

シェル変数 #

環境変数と似たようなものにシェル変数というものがあります。シェル変数はその実行中のシェルのみに関係する変数で、シェルから起動したプログラムには影響を与えません、シェルの動作を変えたりする時に用いたり、あるいはシェルの情報を保持したりするのに用います。また、シェルスクリプトと呼ばれる小さなプログラムを書くときにも用います。

シェル変数の設定をするためには

var=value
とします。この場合、シェル変数 var に値 value が設定されます。シェル変数の参照も $ をつけることで実現できます。シェルが用いるシェル変数の名前は当然シェルによって異なりますが、例えば bashPS1 という名前のシェル変数でプロンプトの設定を行います。

例えば、[g999999@hostname dirname] $ というプロンプトに設定する場合には

PS1="[\u@\h \W]\\$ "

とします。

csh 系シェルの場合 #

シェルには bashcsh の2つの系統があり文法が異なります。 cshtcsh においては環境変数の設定には export ではなく setenv を用います。

setenv LANG en_US.UTF-8

また、シェル変数の設定は set コマンドを用います。

set path=($path $HOME/bin)

cshtcsh で用いられるシェル変数 path は、環境変数 PATH と連動します。

コマンド編集 環境変数 シェルスクリプト