sudo suを使用した後、カスタムPS1が有効になります

sudo suを使用した後、カスタムPS1が有効になります

CentOS Linux マシンの .bash_profile 非ルート アカウントにスクリプトを設定して、sudo su 後に PS1 を変更しましたが、sudo su は実際には新しいセッションを作成するため、スクリプトは当然停止し、.bash_profile で変更するように指示されているにもかかわらず、PS1 は変わりません。ここでは何も問題はありませんが、sudo su 後にコマンド (私の場合は PS1 を変更する) を実行する方法はありますか? スクリプトを .bashrc にも配置してみましたが、同じ結果でした。

答え1

積み重ねるsudoと、su混乱が生じると思います。

私にとって、正しいPATHの設定と関連ファイルからのその他の設定を含む、ルートの正しい環境を作成する最も信頼できる方法は/root/sudo -i

マニュアルページをお読みくださいman suそしてman sudoPATH やその他のセッションおよび環境変数が、デフォルトまたは特定のスイッチによって変更されるかどうかには、多くの微妙な点があるためです。

su -との違いに注意してください 。たとえば、通常、 では sudo が特定の環境変数を抑制するようにsu設定されているという事実などです.../etc/sudoers

この表(そして記事全体) では、一見すると似ているコマンドのいくつかの違いが示されています。

                                     corrupted by user's 
        HOME=/root  uses root's PATH     env vars
sudo -i     Y       Y[2]                 N
sudo -s     N       Y[2]                 Y
sudo bash   N       Y[2]                 Y
sudo su     Y       N[1]                 Y


[1] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
    probably set by /etc/environment
[2] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

関連情報