25.2 環境変数

シェルに限らず,全てのプログラムは環境変数と呼ばれる変数を持っています.この環境変数の値によって,シェルの動作を変えることができます.

環境変数の見方

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

printenv return2
TERM_PROGRAM=Apple_Terminal GPG_AGENT_INFO=/home02/6442238434/.gnupg/S.gpg-agent:900:1 TERM=xterm-256color SHELL=/bin/bash TMPDIR=/var/folders/zz/zyxvpxvq6csfxvn_n000545800191_/T/ Apple_PubSub_Socket_Render=/tmp/launch-ewWJ1D/Render TERM_PROGRAM_VERSION=303 TERM_SESSION_ID=31A27E00-7A61-40A4-8B86-05AF1F1D5715 USER=6442238434 COMMAND_MODE=unix2003 SSH_AUTH_SOCK=/tmp/launch-HibppX/Listeners __CF_USER_TEXT_ENCODING=0xA42A:1:14 Apple_Ubiquity_Message=/tmp/launch-408tUw/Apple_Ubiquity_Message PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/MacGPG2/bin PWD=/home02/6442238434/Desktop/hwb2012 XMODIFIERS=@im=kinput2 LANG=ja_JP.UTF-8 SHLVL=1 HOME=/home02/6442238434 LOGNAME=6442238434 DISPLAY=/tmp/launch-YE0XFX/org.x:0 _=/usr/bin/printenv OLDPWD=/home02/6442238434

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

echo $PATH return2
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/MacGPG2/bin

さて,環境変数の使い方を見てみましょう.たとえば, LANG という環境変数は, デフォルトで用いる言語を設定するために用います.LANG の値に ja_JP.eucJP を設定すると日本語を日本語 EUC の文字コードで利用する設定になります.これらの環境変数は,シェル内で走らせる各プログラムの中から参照できます.したがってシェルで適切な環境変数を設定しておけば,そこから起動されたプログラムはその環境変数を用いて適切な動作をすることができます.

環境変数の設定

環境変数の設定には export というコマンドを用います.

export LANG=ja_JP.eucJP return2

シェルは各ターミナルウィンドウごとに走っていることに注意してください. 一つのシェルで環境変数を設定しても, 他のターミナルウィンドウのシェルの環境変数には影響がありません. ログインのたびにすべてのシェルで環境変数に特定の初期値を設定する方法は,hwb25.3 初期設定ファイルのところで学びます.
よく用いる環境変数をいくつか書いておきます.

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

シェル変数

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

var=value return2
とします.この場合,シェル変数 var に値 value が設定されます.シェル変数の参照も $ をつけることで実現できます.シェルが用いるシェル変数の名前は当然シェルによって異なりますが,例えば bash は PS1 という名前のシェル変数でプロンプトの設定を行います.
例えば, [g999999@hostname dirname] $ という形のプロンプトを使う場合には

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

とします.

csh 系シェルの場合

csh や tcsh においては環境変数を設定するコマンドは export ではなく setenv となります.

setenv LANG ja_JP.eucJP return2

として環境変数を設定します.
また,シェル変数の設定は set コマンドを用います.

set path=($path $HOME/bin) return2

csh や tcsh で用いられるシェル変数 path は,環境変数 PATH と連動します.