長南です。 戸山さんのメールより [vine-users:068501] > > Vine 3.0 に NIS 認証で ksh を使ってログインしているのですが、ログイン時に > 以下のようなエラーが出ます。 > > ----- (中略) ----- > > どうやら原因はこれらのスクリプトが bash で動かす事を前提に書かれていること > のようです。実際、export は bash と ksh でパラメータが違うようですし、ksh > では source コマンドさえ動かないようです (これはなぜか私にも分かりません > が)。NIS を使って様々な UNIX を動かす関係上 bash を使う事ができないので、 > 何とかこのエラーを修正したいと思っておりますが、いい方法がありますでしょう > か。 Vine 3.0 が動いているのは、リモートのマシンなのですね。ローカルなら、 グラフィック・ログインをすればよさそうですから。 そうなると、/etc/profile.d にあるスクリプトを ksh でも動くように 書き直すよりなさそうです。 ちょっと試してみましたが、思いのほか簡単にできるようです。 1) ksh では関数の export ができないようなので、export -f を使っている スクリプトがあったら、先頭に [ "$SHELL" = "/bin/ksh" ] && return 0 とでも書いておく。そしてその関数の機能が必要なら、ホームディレクトリ にある ksh の設定ファイルで実現するようにする。 2) source コマンドを .(ドット・コマンド)に変更する。 3) リダイレクションを ksh でも有効な書き方にする。 4) ほかにも bash 特有の書き方をしている部分があったら(bash にしかない 内部コマンドを使っているなど)、ksh でも可能なやり方に書き変える。 5) あとは実際に使ってみて、問題があったら修正。 # 実のところ、直すのは数カ所しかありません。 ksh は /usr/share/vine/vinelib の実行でもエラーを出していますが、 /usr/share/vine にあるスクリプトを bash、ksh 両用に書き直すのは 面倒です。そこで、こちらは手を入れずに、/etc/profile.d/ime.sh で /usr/share/vine/vinelib を読み込まず、/etc/X11/xinit/xinitrc.d/setime で(imelib の代わりに)読み込むようにしました。コンソールで setime を 実行した後、再ログインしないと、変更が完全に反映しないという、副作用が ありますけれど。 ローカルに ksh のユーザを作って試したところ、一応うまく行ったようです。 まあ、ちょっとしか試していませんから、長い間使っているうちに、何か問題が 出てくるかもしれませんが。 -- 長南洋一