[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:16040] Re: 環境変数の設定



  永井@シリウスです。

>>>>>> Takashi Kuwabara <curious@xxxxxxxxxxxxxxxxxx> wrote:

curious> で、これを僕みたいにPathの設定を変えて、通常ユーザー用にコピー
curious> (.profileは.bash_profileとしてコピー)して使うと、Xの起動後
curious> メニューから端末を立ちあげると、.bash_profileが有効になり、
curious> 実行されるようです。
curious> Xでは.bash_profileは無視されると思っていたんですが
curious> どうも違うみたいです。

  ktermの起動オプションによって動作が違うはずです。ktermや
xtermは、-ls オプションをつけることでシェルをログインシェルと
して起動させることができます。
  -lsオプションをつけることで、例えばbashとかでは、シェルのロ
グイン用のプロファイルである .bash_profile を実行しますが、こ
のオプションをつけないと、.bashrc を実行します。

.bash_profile に export LANG=ja_JP.ujis と書いたプロファイルを
持つユーザーから、export LANG=Cした環境で、

> kterm&
> kterm -ls&

とやってみて echo $LANG してみるとわかると思います。前者は 
LANG=Cのままですが、後者はLANG=ja_JP.ujisになってるはずです。

  あと、bash(たしかkshも似たような構成)では、

・/etc/profile はシステムワイドなログインプロファイル。

・~/.bash_profile は個人のログインプロファイル。ログイン時に実
行したい処理を記述する。

・~/.bashrc は単にサブシェルを実行したときに読み込まれるときに
実行したい処理を記述する。子シェルに引き継ぐことができない環境
変数や、エイリアス(←これも子シェルに引き継ぐことができない)
を設定するのに使える。

という利用方法が推奨されていたと思いますので、.bashrcにはあま
り環境変数の設定を入れないのが普通なのではないかと思っています。

  例えば、.bashrcに環境変数の設定を入れてしまうと、意図的に別
の環境変数を設定したbashからforkされたサブシェルでも環境変数が
いつも.bashrcのものに従ってしまい、シェルスクリプトなどが予期
せぬ動作を行うことがあるのではないかと思います。

---
Toyohiko Nagai <nagai@xxxxxxxxxxxx>
PGP Key fingerprint : F2 40 A5 42 F6 49 65 FF  09 B0 B3 77 5F 2A F6 F7