system management
1754092 メンバー
3887 オンライン
108811 解決策
新規ポスト

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件の返信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の結果だけだと思うんですが、それが影響しているのでしょうか?