Unixユーザーエクスペリエンスの変更

Unixユーザーエクスペリエンスの変更

ログインするには、パスワードを入力せずにuser1別のUnixユーザー環境でプロジェクトを実行したいと思います。user2

「プロジェクト」とは、次のことを意味します。
- 現在の$HOME
-call user2bash起動スクリプトを変更します(プロンプトとグローバル変数を取得するため)。

私は小さなスクリプトを書いたswitch_user_env.sh

HOME="/usr/users/$1"
cd "$HOME"

bash

. /etc/profile

if [ -f "$HOME/.bash_profile" ]; then
    . "$HOME/.bash_profile"
fi

if [ -f "$HOME/.profile" ]; then
    . "$HOME/.profile"
fi

私はそれをそう呼ぶ:. ./switch_user_env.sh user2

現在、シェルはbashに正しく変更されていますが、起動スクリプトは呼び出されませんでした。

何が間違っているかを理解するのに役立ちますか?

ありがとうございます!

[編集]
switch_user_env.shソースコードはGitHubにあります。https://github.com/pierrefevrier/switch-user-env

答え1

スクリプトの残りの部分(以降強く打つcall)はbashを終了した後に実行されます(exitコマンドまたは「Ctrl + d」入力)。スクリプト内でbashを呼び出すと、追加の実行を制御できます。

これは更新されたバージョンです。

HOME="/usr/users/$1"
cd "$HOME"

SOURCE_PROFILE=/etc/profile

if [ -f "$HOME/.bash_profile" ]; then
    SOURCE_PROFILE="$HOME/.bash_profile"
fi

if [ -f "$HOME/.profile" ]; then
    SOURCE_PROFILE="$HOME/.profile"
fi


bash --rcfile "$SOURCE_PROFILE"

関連情報