Unixコマンド/set

set

機能

setコマンドは、シェルの内部コマンドで、変数を表示、設定します。
引数なしで実行すると、現在設定されているシェル変数とその値の一覧を表示します。
bsh(その系列シェル)では「変数=値」の形式で、csh(その系列シェル)では「変数 値」の形式で表示します。

構文

set
set 変数[=値]
set 変数=(リスト)

コマンド例

▼シェル変数を表示する。

$ set
_       ls

addsuffix
argv    ()
autolist
color
cwd     /home/matsui
dirstack        /home/matsui
dspmbyte        euc
echo_style      bsd
edit
filec
gid     1001
group   Admin
history 100
home    /home/matsui
killring        30
loginsh
mail    /var/mail/matsui
matchbeep       never
owd
path     (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin
/usr/X11R6/bin /home/matsui/bin)
prompt  %n@vaio$
prompt2 %R?
prompt3 CORRECT>%R (y|n|e|a)?
savehist        100
shell   /bin/tcsh
shlvl   1
status  0
tcsh    6.12.00
term    vt100
tty     ttyp0
uid     1001
user    matsui
version tcsh 6.12.00 (Astron) 2002-07-23 (i386-intel-FreeBSD) options 8b,nls,dl,
al,kan,sm,rh,color,dspm,filec

▼シェル変数を定義する(cshの場合)

$ set |grep filec
$ set filec                   変数filecを定義する。
$ set |grep filec
filec
$ set savehist=256            変数savehistを定義し、値を256に設定する。
$ set |grep savehist
savehist   256                変数savehistの値が256に設定されている。

▼シェル変数に値を追加する(cshの場合)

$ set path=($path /usr/local/libexec)           pathのリストに値を追加する。
$ set |grep path
path        (/home/genesis/bin /bin /sbin /usr/bin /usr/sbin /usr/local/sbin /usr/local/bin /usr/local/libexec)
                                                設定した値が追加されている


▼シェル変数と環境変数
シェル変数、環境変数どちらも、あらかじめある変数に値を設定しておき、その変数の設定を
もとに動作環境を変更する、といった使い方ができます。
大きく異なるのはその有効範囲です。
環境変数は、シェルから実行したプロセスにもその環境変数の設定が引き継がれます。
これに対しシェル関数は、あくまでシェル自身の動作環境の変更のためだけに用いられます。

位置パラメータをセットする。

setコマンドを使うと、いつでも位置パラメータを再設定できます。
たとえば、コマンドを実行してその結果を位置パラメータにセットしたりできます。

■例:dateコマンドの実行結果を位置パラメータに渡し、for文で表示する。

$ set `date`
$ for i in $@
> do
> echo $i
> done
2006年
8月
29日
火曜日
19:07:51
JST