シェルの変数
シェルにおける変数とは
シェルでは変数を使うことができる。
この変数にはシェル変数と環境変数の2種類がある。
- シェル変数
- シェルの動作環境を設定したり、シェルスクリプトで使用する。
- 環境変数
- コマンドの動作環境を設定する。
UNIXのコマンドはこの環境変数によって動作を変更するものが多い。
変数の使い方
- シェルで変数に何かを代入するには以下のように実行する。
set 変数名 = 値 (シェル変数)
setenv 変数名 値 (環境変数)
- そして、代入された値を参照する時には、以下のように変数名の前に$をつける。
$変数名 (シェル変数)
- 変数を消去する時は以下のコマンドを使用する。
unset 変数名 (シェル変数)
unsetenv 変数名 (環境変数)
- 現在設定されている変数を表示する時は以下のコマンドを使用する。。
set (シェル変数)
setenv (環境変数)
- 変数名には英数字を使用する。(頭文字は英字であること)
ただし、シェル変数には小文字、環境変数には大文字を使うのが習慣になっている。
- 代入される値は数値(整数、実数)、文字列の区別はない。(実際は、全て文字列として代入される)
- 他の変数の値を代入することもできる。
- C言語のように変数宣言(int x; など)の必要もない。
- シェル変数には配列もある。
- 変数はコマンドラインからでも、シェルスクリプトの中でも使用できる。
- シェル変数・環境変数はシェルを終了すると消えてしまう。
シェルを起動するたびに同じ変数を設定するためには~/.cshrcまたは~/.loginに書き込んでおく。
変数の例
# set x = 123 <- 変数xに123を代入する
# set y = 55.32 <- 変数yに55.32を代入する
# set str = "this is strings." <- 変数strにthis is strings.を代入する
# echo $x <- echoコマンドで変数xの中身を確かめる
123
# echo $y
55.32
# echo $str
this is strings.
# set z = $x
# echo $z
123
# set z = "$x $y"
# echo $z
123 55.32
# unset z <- 変数zを消去する
# echo $z
z - Undefined variable <- 変数zが存在しないというエラーメッセージ
特別な変数
シェルではログイン時にあらかじめ設定されている変数がいくつかある。
設定されている変数の例
# set
cwd /CG/CGtec/abe/
gid 1000
group abe
history 100
home /home/abe
path (. /bin /usr/etc /usr/bin/X11 /usr/bin /usr/local/bin)
shell /bin/tcsh
status 0
tcsh 6.07.02
tty ttyp0
uid 1000
user abe
# env
HOME=/home/abe
SHELL=/usr/bin/jtcsh
PATH=.:/bin:/usr/etc:/usr/bin:/usr/local/bin
USER=abe
PWD=/CG/CGtec/abe/
GROUP=abe
HOST=friendly
LANG=ja_JP.ujis
MANPATH=/usr/local/man:/usr/man/preformat:/usr/man:/usr/X11R6/man:/usr/openwin/man:/home/abe/usr/man
これらの値の一部は~/.cshrcまたは~/.loginファイルの中で設定している。
いくつかの変数の意味は以下の通り。
- シェル変数
- path
- コマンドを探すパス名
コマンドはこのパスの中から探される。
これらのパスの中にコマンドが見つからなければ実行されない。
- home
- ホームディレクトリ
- history
- ヒストリーで過去にさかのぼって覚えておくコマンドの個数。
- tty
- 現在のコンソール名。
- user
- ユーザー名
- prompt
- プロンプトを表す。
- 環境変数
- PATH
- コマンドを探すパス名
- HOME
- ホームディレクトリ
- TERM
- 現在のコンソール名。
- USER
- ユーザー名
- PWD
- カレントディレクトリを表す。
- SHELL
- 現在のシェルを表す。
練習課題
- set、envを使って自分の環境でどんな表示が出てくるか確かめよう。
まとめ
- シェル変数を設定するにはsetを使用する。
- シェル変数を参照するには$変数名を使用する。
- シェル変数を消去するにはunsetを使用する。
- シェル変数では変数宣言は必要無い。
- シェル変数にはなんでも(数値・文字列)区別無く代入できる。
- シェル変数にはログイン時に設定される特別な変数がある。
参考
Prev | Next
Home | Contents
abe@injapan.net