UNIX/Linuxの部屋 コマンド:setenv

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド setenv 環境変数を設定・定義・更新する。csh・tcsh の内部コマンド。 このエントリーをはてなブックマークに追加

最終更新


setenv コマンドは、環境変数を設定・定義・更新する csh・tcsh の内部コマンドである。PATH の設定・更新を行う際によく使用される。


はじめに
setenv コマンドは「csh または tcsh において」「環境変数を」設定するためのコマンドである。

環境変数ではなくシェル変数を設定したい場合は setenv コマンドではなく set コマンドを使う。
また、sh・bash を使っている場合は setenv コマンドではなく export コマンドを使う。

setenv コマンドの基本的な使い方
csh・tcsh における環境変数の設定方法は "setenv [環境変数名] [値]" である。"setenv [環境変数名]=[値]" のように間にイコールを挟まないことに注意。

setenv コマンドで環境変数を設定:
% setenv SAMPLE test
→ 環境変数 SAMPLE の値は test となる。
空白やメタキャラクタを含む場合はダブルクォートやシングルクォートで囲む
% setenv SAMPLE "This is test"
% setenv SAMPLE 'hoeg* fuga?'

環境変数が設定されているかは下記のようにして確認する。

printenv コマンドで確認:
% printenv SAMPLE
test
% /usr/bin/printenv SAMPLE
test
→ 念には念を入れて外部コマンドの printenv コマンドでも確認
env コマンドで確認:
% env | grep SAMPLE
SAMPLE=test
→ env コマンドでも確認

環境変数を削除するには unsetenv
環境変数を削除するには unsetenv コマンドを使う。"unsetenv $[環境変数名]" ではなく、変数名の先頭の "$" なしで "unsetenv [環境変数名]" でとすることに注意。
% unsetenv SAMPLE
→ 環境変数 SAMPLE を削除
% printenv SAMPLE
→ 何も表示されなくなった

ちなみに tcsh の unsetenv はワイルドカードが使えるようで、下記のようなことができる。
% unsetenv A*
→ A から始まる環境変数をすべて削除する
% unsetenv *
→ 全ての環境変数を削除する

環境変数 PATH の更新方法と注意点
環境変数 PATH の末尾に追加する場合、既存の PATH と新しいパスをコロンでつなげよう。変数名の "$PATH" ではなく "${PATH}" と "{}" で囲んで書くようにしよう($変数 の後にコロンを置くと、修飾子として機能してしまうため)。
% setenv PATH "${PATH}:/usr/local/sbin"
→ PATH の末尾に /usr/local/sbin を追加
% setenv PATH "${PATH}:${HOME}/bin"
→ PATH の末尾に $HOME/bin を追加。

なお、下記のようにホームディレクトリを "~" (チルダ) で書いてはいけない。
% setenv PATH "${PATH}:~/bin"
→ PATH の末尾に $HOME/bin を追加。

"~" (チルダ) をホームディレクトリに展開するのは csh・tcsh の仕事であるが、展開してくれるのは単語の先頭にチルダがある場合のみであるからである。
% echo ~
/home/68user
→ 自身のホームディレクトリに展開される
% echo ~root
/root
→ ホームディレクトリに展開される
% echo ~root/hogehoge
/root/hogehoge
→ これも展開される
下記はチルダが単語の先頭にないので、展開されない。
% echo hoge~root
hoge~root

また、環境変数 PATH 自体の説明やリスクは下記を参照してほしい。

環境変数の一覧表示
setenv コマンドの引数を省略すると、現在設定されている環境変数を全て表示する。あるいは env コマンドや printenv コマンドを使ってもよい。

環境変数名について
環境変数名は英数字を使うことができるが、英大文字と数字で構成するのが一般的である。英小文字は使えないわけではないが、シェル変数と区別がつきづらくなるためおすすめしない。
% setenv HOGE abc
→ 環境変数名が大文字なので OK
% setenv fuga def
→ 環境変数名が小文字なので、使えないわけではないがおすすめしない

関連コマンド
setenv は csh・tcsh の内部コマンドである。sh・bash で環境変数を設定するには export コマンドを使う。

読み方 setenv (Cシェルコマンド) [せっと・えんぶ] このエントリーをはてなブックマークに追加

"SET ENVironment variable" の略。