2017-02-15

環境変数SHELLの役割とは?

NetBSDの場合、新しくアカウント作るとホームディレクトリの下にはテンプレートからコピーされたファイルが置かれます。そのうち.loginには次のような記述が含まれています。
if ( ! $?SHELL ) then
  setenv SHELL /bin/csh
endif

環境変数 SHELLが未定義だった場合/bin/cshという内容で定義している訳ですが、これは何故このようなことをしているのでしょうか?

疑問点は2つあります。
  1. この記述は~/.loginにありますから、cshに固有な初期設定ファイルです。このファイルが処理されている時に「環境変数SHELLが未定義である」のは一体どのような状況を想定しているのでしょうか?
  2. 環境変数SHELLが未定義の場合どういう問題が起きるのでしょうか? 何か困ることがあるのでしょうか。例えば環境変数PATHが未定義だとすれば、コマンドが見つけられなくなってしまうわけです。しかし環境変数SHELLが未定であったとしても、問題がおきる状況というのが想像できません。
シェルはユーザが自由に選択できるのでcshではなくshを使っても構わないはずです。もしshを利用する場合~/.profileを使うことになりますが、そこでは環境変数SHELLに関する処理は入っていません。つまり、こういうところから、環境変数SHELLが未定義だった場合の処理は不要なのではないかという疑問が出てくるのです。

0 件のコメント:

コメントを投稿