user1というユーザーがいます 、 .bash_profileに変更が加えられています 、そのうちの1つが PATHを変更します 例: export PATH =/ some / place:$ PATH 。 user1 としてログオンすると、この変更は正常に機能します またはsu--user1を実行します 。
しかし、 suを介してコマンドを実行しようとすると rootとして 例:
su -c test.sh oracle
(テストには echo $ PATHが含まれています )
PATHが変更されていないようです (またはルートの PATH 、 そのことについては)。 .bash_profileもコピーしてみました .profileへ 、無駄に。
なぜこれが起こっているのですか?
承認された回答:
suを使用する -lなし または- bashを開始します インタラクティブであるがログインしていないシェルとして、指定したファイルのいずれからも読み取れません。 -lを使用します または- オプションを選択するか、関連する構成を /root/.bashrcに配置します 。
構成ファイルの簡単な要約:
- ログインシェル(
-l </ code> /-ログインコード> )/ etc / profileを読み取ります 最初に、次に最初に検出されたもの:〜/.bash_profile、〜/ .bash_login、および〜/ .profile。 - インタラクティブであるがログインしていないシェル(
-i)/etc/bash.bashrcを読み取ります および〜/ .bashrc、この順序で(-rcfileを除く) オプションが使用され、他の場所を探すように指示します。 - 非対話型シェル(例:
-lを使用せずに別のプログラム内から開始 または-iフラグ、BASH_ENVで指定されたファイルを読み取ります 環境変数。 -
shとして実行する場合 ログインシェルとして、/ etc / profileを読み取ります および〜/ .profile、この順序で。 -
shとして実行する場合 インタラクティブな非ログインとして、ENVで指定されたファイルを読み取ります 。