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
で指定されたファイルを読み取ります 。