Terminalにおける.tcshrcおよび.loginの読み込み
DeveloperToolsに付属するコマンドをデフォルトで使えるようにするため、PATHを通しました。やりたいことは出来ており、その点では一応解決していますが、疑問が生じたため、教えていただければと思います。
#Terminalは、やってみたいことが出てきた時にコマンドを調べるだけで、知識は乏しいです。
以下に、やったことを記載します。
T1)PATHを通すには‾/.tcshrcに以下を記載すればいいらしい、と言うことで、
setenv PATH /usr/local/bin:<略>:/Developer/Tools
と記載して、Terminalを再起動しました。
しかし、setenvで確認すると通っておらず、例えばCpMacと打ってもcommand not foundと言われました。試しに、tcshを実行すると、ちゃんとPATHが通りコマンドが有効になりました。
このことから、terminal起動時(或いは新規shellを開く時)に.tcshrcを読み込んでいないと考えました(実際には読み込んでいます。後で記載)。そこで、
T2)Preferencesで、"Execute this command:"にチェックを入れて、/bin/tcshをデフォルトにしました。しかし、結果は1)と同じでした。
T3)結局、デフォルトのShellCommandをloginに戻し、‾/.loginの"set path = ()"にパスを追加したところ、
set path = ( ¥
<略>
/sbin ¥
/Developer/Tools ¥
)
デフォルトで通りました。
ここまでは、そういうもの、すなわち、Terminalを起動しただけでは.tcshrcは読み込まず、tcshを実行した時に読み込むものかと思っておりました。ところが、iTermを使ってみたところ、ちょっと違いました。
i1)Default Shell Commandをloginにしている場合は、.loginに記載のパスが通り、.tcshrc記載のパスを有効にするにはtcshを実行しなければならない。すなわち、T1)と同じ。
i2)DefaultShellCommandをtcshにすると、新規ShellWindowを開いた段階で.tcshrcを読み込む。T2)とは挙動が異なります。
また、実際には.tcshrcを読み込んでいることも確認しました。デフォルトのPAGERをlessにするため、.tcshrcに"setenv PAGER less"を加えました。これは読み込んでおり、setenvで確認すると"PAGER=less"と出てきます。従って、T1)およびi1)に関しては、読み込み順と解釈出来ます。.tcshrcを読み込んだ後.loginを読み込み、後から読み込んだPATHが有効になっているのではないかと考えられます。i2)に於いて、.tcshrcのPATHが有効になるのは.loginを読み込んでいないからと推定出来ます。そこで、.tcshrcの記載を
setenv PATH /Developer/Tools
とし、.loginの方を
set path = ( ¥
<略>
/sbin ¥
$PATH ¥
)
とし、$PATHを追加してT1)およびi1)を試したところ、新規ShellWindowを開いた段階で全てのPATHが通っていました(setenvで"PATH=<略>:/sbin:/Developer/Tools"と出る)。よって、読み込み順の問題と結論出来ます。また、この状態でi2)を試すと、"PATH=/Developer/Tools"となります。しかし、T2)を試すと、"PATH=<略>:/sbin:/Developer/Tools"となりました。すなわち、TerminalはPreferencesでDefaultのShellCommandをloginからtcshに変更しても、.loginを読み込んでいるようです。
所期の目的は達しており、些事ではありますが、気になりましたので質問しました。
(1)そういうもの。(2)terminalの問題。(3)私が何か勘違いしている。(4)私の環境に問題がありそう。(5)その他。
環境:
MacOSX10.2.4 (Build 6I32)
Terminal 1.3.1 (v82)
iTerm 0.6.3
#些事にしては長くてすみません。