user1
たとえば、それを変更したユーザーがあり、.bash_profile
そのうちの1人が変更されました。PATH
例: export PATH=/some/place:$PATH
。ログインuser1
または実行するとsu - user1
。
su
ただし、たとえばasでコマンドを実行しようとすると、root
次のようになります。
su -c test.sh oracle
(テスト含むecho $PATH
)
PATH
修正されたもの(またはルートされたPATH
もの)ではないようです。また、.bash_profile
にコピーしようとしましたが、.profile
成功しませんでした。
なぜこれが起こるのですか?
答え1
su
対話型の非ログインシェルなしで、-l
または対話型の非ログインシェルとして実行されると、-
指定したファイルからは読み取られません。または、オプションをbash
使用するか、関連する設定をに入れます。-l
-
/root/.bashrc
構成ファイルの簡単な要約:
- ログインシェル(
-l
/--login
)が/etc/profile
最初に読み込まれ、次に最初のエントリである、およびが読み込ま~/.bash_profile
れ~/.bash_login
ます~/.profile
。 - インタラクティブであるがログインではないシェル(
-i
)は、その順序で合計を読み取ります/etc/bash.bashrc
(このオプションを使用して他の場所を表示するように指示しない限り)。~/.bashrc
--rcfile
-l
または、フラグなしで他のプログラムから起動されたものなどの非対話型シェルは、-i
環境変数で指定されたファイルを読み取りますBASH_ENV
。- ログインシェルで実行すると、
sh
合計が順次読み込まれます/etc/profile
。~/.profile
- 対話型の非ログインで実行する
sh
とENV
。
答え2
Bashは、ログインシェル、つまりシステムにログインしたときに実行される最初のシェルだと思うかどうかによって異なります。.bash_profile
ログインシェルのみを読みます。PATH
変更されたコードをここに入れると、ログイン.bashrc
シェルだけでなく、すべてのインタラクティブbashシェルに対して実行されます。
答え3
Scientific Linux 6(またはRHEL 6)でGnome環境を使用している場合は、ターミナルを実行してください。Edit
-> Profile Preferences
->"Title and Command"
タブに移動します。ログインシェルでコマンドを実行するチェックボックスが選択されていることを確認してください。.bash_profile
私がそうしないと、Gnome Terminalアプリケーションが私のアプリケーションを無視することがわかりました。