シェル変数と環境変数 ~tcsh~

シェルで使う変数には,「シェル変数」と「環境変数」の2種類あります.

シェル変数

> set var=test
> echo $var
test
> tcsh  # 新しいシェルに移動(子シェル)
> echo $var
var: undefined variable.

このように,シェル変数のスコープは,その変数を定義したシェルのみで,他のシェルに移ると使えなくなります.

環境変数

> setenv VAR HOGEHOGE  # 環境変数定義
> echo $VAR
HOGEHOGE
> tcsh  # 新しいシェルに移動(子シェル)
> echo $VAR
HOGEHOGE

このように,環境変数のは,子シェルにも伝わります.


よく使う環境変数

現在設定されている環境変数はprintenvコマンドで表示することができます. 色々なシェル変数が使われていますがその中でも個人的によく使うと思うものを紹介します.

$LANG : 現在のデフォルトの言語の設定です.
Terminalが文字化けしたときには,これを"en_US.UTF-8"などにすると出力は英語になりますが,
文字化けが直ります.

$USER : 自分のユーザー名です.

$PWD  : 今いるディレクトリのパスです.

$HOME : 自分のホームディレクトリです.

$SHELL : ログインしたときに最初に実行されるシェルです.(現在実行しているシェルとは限りません.)

$PATH : 「パスを通す」で有名なパスです.ここにディレクトリを書くとプログラム実行時に./や絶対パスを書かなくても実行できるようになります.
### PATH追加の例
setenv PATH ${HOME}/bin:${PATH}  # $PATH$HOME/binを追加
再起動すると元に戻ってしまうので,~/.tcshrcにこれを書くと永続化します.

$SHLVL : シェルの深さが分かります.tcshとecho $SHLVLを交互に打つと多分意味が分かります.
Tweet