- アカウントは、rootと、2つの非特権ユーザがあり、合計で3つのアカウントがある。
- シェルには、rootはshだが、非特権ユーザはtcsh(場合によってはcsh)を使う。
- 各アカウントには、xdm経由でログインする場合と、TeratermやSSHなどの端末経由でログインする場合がある。
- xdmでログインした場合、twmを利用するアカウントと、MATEを利用するアカウントがある。
rootのシェルをCSH系にするというのも一案ではありますが、伝統的にrootはSH(1)を使ってきた(BASHですらなく)という経緯があるので、シェルを統一してしまうのは気が引けます。アカウントやログイン経路なども、何かに限定するわけにもいきません。
ここは覚悟を決めて、統一した環境を作ることを考えてみます。SH(1)にしろCSH(1)にしろ、初期設定を行うファイルは、全部使うかどうかは別にして、次のようになっています。これらを組み合わせて計4種類のファイルがあります
- /etcに置かれるシステム全体のものと、ホームディレクトリに置かれるユーザ固有のもの
- ログインシェルの場合に呼び出されるものと、サブシェルでも呼び出されるもの
環境を設定するための基本方針を次のように定めました。
- 基本的に/etcにあるファイルで設定をおこなう。
- ユーザ固有の設定がある場合のみホームディレクトリのファイルで設定する。従ってユーザ固有の設定がなければ、ファイルは空のままになる。
- 環境変数PATHやLANGのような情報はログインシェルの場合に読み込まれるファイルで設定し、シェル変数やコマンド・エイリアスなどはサブシェルでも読み込まれるファイルで設定する。
XDMはホームディレクトリにある.xsessionというファイルを使って初期設定をおこないます。このファイルは実行ビットが立っていてもいなくても構わないのですが、実行ビットが落ちている場合にはSH(1)のスクリプトとして扱われます。そうなるとユーザがCSH系のシェルに切り替えている場合、環境変数などをSH系としてもCSH系としても定義しておくことになり、重複して環境をメンテナンスするのは間違いのもとです。
この問題を解決するためにホームディレクトリにある.xsessionはユーザで使っているシェルにあわせることにしました。CSH系を利用するのであれば、このファイルもCSHのスクリプトとして書いておきます。さらに実行ビットを立てておかないと、shを介して実行されてしまいますから、忘れずにchmodしておきます。そして~/.xsessionの最初の方で/etcやホームディレクトリにあるシェル用の環境設定ファイルを読み込むようにしておきます。
以上のようにしておけば、環境を設定するための情報をあちこちに書かずにすむようになると思います。
上述した環境を整えている段階で/etc/login.confという設定ファイルがあるのも気にかかっていました。このファイルでも環境変数などを設定できるので、ここで設定しておいた方が良いのだろうかと悩みました。結局このファイルは使わない決断をしましたが、その理由はXDM経由でログインした場合の扱いが不明だったことです。XDMやLightDMなどを利用した場合に/etc/login.confで設定してはずの内容が使われないのであれば無駄になると思ったのです。
そもそも/etc/login.confが存在する歴史的経緯や、どのような利用方法を想定しているのかが分からないので、今回は使わないこととしました。
0 件のコメント:
コメントを投稿