シェル - シェルスクリプト - 端末を判定する(前方一致)

 クラウディア
1. 概要
2. 端末を判定する

1. 概要

 「FreeBSD」を「VirtualBox」上に構築して、作業したりします。  「tcsh」を使用していて、「root」ユーザ権限で作業する際、「sudo su」を使います。  パスワードを聞いてきますが・・・。

~/.cshrc
 に

setenv LANG     ja_JP.UTF-8
 を記述しておりますので、パスワード要求の際

$ sudo su
パスワード:
 てな感じで表示されるのですが。  「VirtualBox」のコンソールで、これをやると
「VirtualBox」-「sudo su」「文字化け」

 てなことになりまして、非常に気持ち悪い。

2. 端末を判定する


~/.cshrc
 は、「csh」「tcsh」のシェルスクリプトの動きをしますから、「csh」のシェルスクリプトで判断しなければならんわけです。  そこでまぁ、「tty」シンボルを確認すると「Tera Term」でログインした状態であると

$ echo $tty
pts/0
 後半の数字はともかく・・・こうなります。  「VirtualBox」のコンソール上だと

$ echo $tty
ttyv0
 これも後半の数字はともかく・・・こうなります。  なので、「setenv LANG」の個所を

if ($tty =~ pts) then
        setenv LANG     ja_JP.UTF-8
endif
 と記述しますと、「Tera Term」上の「sudo su」は、以前と同じ。  「VirtualBox」のコンソール上では
「VirtualBox」-「sudo su」「文字化けなし」

 と、思い通りになりました。

earthcar(アースカー)