システム管理
キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

script中のsuに関して

MARK2
時折のビジター

script中のsuに関して

はじめまして

以下の現象が発生し困っています。

どうかよろしくお願い致します。



�Cシェルユーザでログイン

�scriptコマンドでログを取得

�他のKシェルユーザにsuコマンドでユーザの切替。(su - ユーザ)

�.profile:setenv:みつかりません。が表示される。



・OSはHPUX11.0です

・�と�のユーザは、ユーザを作成し「.profile」等はデフォルトのままです。

・.profileの22行目は「eval ` tset -s -Q `」です。

・.profileをデバッグすると、tset内の「setenv TERM vt100」でエラーになります。



・Kシェル同士のユーザでは問題ありませんでした。

・scriptコマンドを実施して無い場合は問題ありませんでした。



・�のCシェルユーザ側で対応できないでしょうか

・HPUXではもともとこのような仕様になっているのでしょうか

・何か良い対応方法はないでしょうか

よろしくお願い致します。
3 件の返信
hazelwood
信頼あるコントリビューター

script中のsuに関して

テストしてみたところ、環境変数のSHELLが/usr/bin/cshのままになっていました。

これが原因で、tsetがsetenv xxxxを作ってしまっています。

どうもscriptの中からだとsu したときにSHELLを変更してくれないようです。一体、なぜでしょう?

このため、csh->kshだけでなく、sh/ksh->cshでも問題が出ます。

とりあえず、回避策としては、su実行前にSHELLを変更しておくぐらいしか思いつきません。

MARK2
時折のビジター

script中のsuに関して

テストまでして頂きありがとうございます。

>とりあえず、回避策としては、su実行前にSHELLを変更しておくぐらいしか思いつきません。

su実行前にユーザ毎のsh/ksh/cshを考慮してSHELLを設定するのは面倒なのと

各ユーザの.profileの先頭に、環境変数のSHELLを設定するようにするのも、ユーザが沢山あると大変で…

一番簡単??な方法として、「su - ユーザ名」でログイン後に再度「su - ユーザ名」を実行することです。

なぜか?この方法だと1回目はエラーになりSHELLの値も変ですが、2回目はそのユーザに設定した値になり問題なく使用できます。

こんな方法で良いのか分かりませんが…
hazelwood
信頼あるコントリビューター

script中のsuに関して

>とりあえず、回避策としては、su実行前にSHELLを変更しておくぐらいしか思いつきません。

すいません、大うそでした。

SHELLを事前に変更してもだめでした。

どうも、SHELLの値が変更されないのではなく、前のユーザのログインシェルの値が設定されているようです。

ですので、su - の中から同じユーザでsu -を繰り返すと、2回目はエラーがでなくなるわけです。

でも、1回目がなぜこのような動作するのかよく分かりません。

scriptの中と外で違うのは、ttyの結果だけだと思うんですが、それが影響しているのでしょうか?