# 17.2. 環境変数
**Source**: https://hwb.ecc.u-tokyo.ac.jp/hwb2023/applications/shell/env/
**Parent**: https://hwb.ecc.u-tokyo.ac.jp/hwb2023/literacy/email/
シェルに限らず、全てのプログラムは環境変数と呼ばれるさまざまな変数を参照します。環境変数の値によって、シェルの動作を変えることができます。
## 環境変数の見方 [#](#printenv)
まず、環境変数の一覧を見るには 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 というコマンドを用います。
以下を実行すると以降のコマンドの応答が英語になります。
export LANG=en\_US.UTF-8
この設定は現在のシェルのみに有効です。すべてのシェルで環境変数に特定の初期値を設定する方法は、[17.7. シェルの初期設定](https://hwb.ecc.u-tokyo.ac.jp/hwb2023/applications/shell/init_env)
のところで学びます。
よく用いる環境変数をいくつか書いておきます。
| 変数名 | 意味 | 関連項目 |
| --- | --- | --- |
| HOME | ホームディレクトリの絶対パス名 | [17.6.1. パスの表記](https://hwb.ecc.u-tokyo.ac.jp/hwb2023/applications/shell/fs/dir) |
| PATH | コマンドの検索パス | [17.6.4. パーミッションと実行ファイル](https://hwb.ecc.u-tokyo.ac.jp/hwb2023/applications/shell/fs/permission) |
| EDITOR | 用いるエディタの種類 | |
| PAGER | 用いるページャの種類 | |
| LANG | 用いる言語 | |
## シェル変数 [#](#shellvars)
環境変数と似たようなものにシェル変数というものがあります。シェル変数はその実行中のシェルのみに関係する変数で、シェルから起動したプログラムには影響を与えません、シェルの動作を変えたりする時に用いたり、あるいはシェルの情報を保持したりするのに用います。また、シェルスクリプトと呼ばれる小さなプログラムを書くときにも用います。
シェル変数の設定をするためには
var=value
とします。この場合、シェル変数 var に値 value が設定されます。シェル変数の参照も `$` をつけることで実現できます。シェルが用いるシェル変数の名前は当然シェルによって異なりますが、例えば `bash` は `PS1` という名前のシェル変数でプロンプトの設定を行います。
例えば、`[g999999@hostname dirname] $` というプロンプトに設定する場合には
`PS1="[\u@\h \W]\\$ "`
とします。
## csh 系シェルの場合 [#](#csh)
シェルには `bash` と `csh` の2つの系統があり文法が異なります。
`csh` や `tcsh` においては環境変数の設定には `export` ではなく `setenv` を用います。
setenv LANG en\_US.UTF-8
また、シェル変数の設定は set コマンドを用います。
set path=($path $HOME/bin)
`csh` や `tcsh` で用いられるシェル変数 `path` は、環境変数 `PATH` と連動します。