suを実行すると、.bash_profileを取得できませんでした。

suを実行すると、.bash_profileを取得できませんでした。

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
  • 対話型の非ログインで実行するshENV

答え2

Bashは、ログインシェル、つまりシステムにログインしたときに実行される最初のシェルだと思うかどうかによって異なります。.bash_profileログインシェルのみを読みます。PATH変更されたコードをここに入れると、ログイン.bashrcシェルだけでなく、すべてのインタラクティブbashシェルに対して実行されます。

答え3

Scientific Linux 6(またはRHEL 6)でGnome環境を使用している場合は、ターミナルを実行してください。Edit-> Profile Preferences->"Title and Command"タブに移動します。ログインシェルでコマンドを実行するチェックボックスが選択されていることを確認してください。.bash_profile私がそうしないと、Gnome Terminalアプリケーションが私のアプリケーションを無視することがわかりました。

関連情報