2017-12-07 5 views
0

現在ログインしているユーザーとしてSSH経由でログインしました。現在ログインしているユーザーとしてシェルスクリプトが実行されるときにシェルスクリプトが実行される

私の管理者アカウントを使用してリモートコンピュータに入ります。

su username_b (current login user) 

結果は(whoamiを使用してこれをテストした)現在ログインしているユーザーとして(私は理解していないもの)はbashプロンプトで私を残し:

ssh [email protected] 

はその後を進めました。

Q1:私は、ログインしているユーザーに切り替え、なぜそれがbashのプロンプト(すなわち~bash$)に私を入れない - なぜない~ username_of_current_user$

bashスクリプトを作成してそれを現在のユーザーのディレクトリに配置した後、スクリプトは起動エージェントから呼び出されますが、動作しません。

エラーログには、変数の出力の1つが間違っていることが示されました。whoami = root、ときには、current_user_logged_inとなります。

Q2:なぜスクリプトがルートから呼び出されていますか?

+1

てみ 'SU - username_b'または' SU -l username_b'(それらが同じである)username_b'ユーザー 'として完全なログインをエミュレートします。環境は 'su username_b'によって最小限に変更されます。 –

答えて

1

su -は、ユーザー切り替え後にログインシェルを起動します。ログインシェルは、ほとんどの環境変数をリセットしてクリーンなベースを提供します。

suは、通常のシェルに古いユーザーとほぼ同じ環境を提供するだけでユーザーを切り替えます。

su -を使用する場合、~はルートのホームディレクトリですが、suを使用する場合は自分のホームディレクトリです。

システムによっては、差異がprompt,PATH、またはhistory fileであることもあります。詳細については

https://unix.stackexchange.com/questions/7013/why-do-we-use-su-and-not-just-su

関連する問題