suの実行時に.bash_profileが取得されない


41

たとえばuser1、ユーザーに変更があり.bash_profile、そのうちの1人がを変更しますPATH(例:)export PATH=/some/place:$PATH。この変更user1は、としてログオンするか、を実行すると正常に機能しますsu - user1

しかし、suas を介してコマンドを実行しようとするとroot、たとえば:

su -c test.sh oracle

(テストにはが含まれますecho $PATH

変更されているPATH(または、ルートのPATH問題)ようではありません。また、にコピーしようとし.bash_profileましたが.profile、役に立ちませんでした。

なぜこうなった?


--loginスイッチを使用してsu
ニヒルマルリー

1
参考までに、bash構成ファイルhacktux.com/bash/bashrc/bash_profileのすばらしい記事
ニヒル

回答:


60

suwithout -lまたは-starts bashをインタラクティブではあるが非ログインシェルとして使用すると、指定したいずれのファイルからも読み取りが行われません。-lまたは-オプションを使用するか、関連する設定をに入れ/root/.bashrcます。

構成ファイルの概要:

  • ログインシェル(-l/ --login)読み出し/etc/profile最初、および最初、それはの発見:~/.bash_profile~/.bash_login、および~/.profile
  • 対話型だが非ログインシェル(-i)は、この順序で/etc/bash.bashrcandを読み取ります(オプションが使用され、他の場所を探すように指示され~/.bashrcない限り--rcfile)。
  • たとえば-l-iフラグを使用せずに別のプログラム内から起動した非対話型シェルは、BASH_ENV環境変数で指定されたファイルを読み取ります。
  • shログインシェルとして実行する/etc/profile~/.profile、との順に読み込まれます。
  • sh対話型の非ログインとして実行すると、で指定されたファイルを読み取りますENV

5

Bashは、ログインシェル、つまりシステムにログオンしたときに最初に実行されるシェルであると信じるかどうかによって、動作が異なります。.bash_profileログインシェルの場合にのみ読み取ります。あなたが入れた場合PATHに-changingコードを.bashrc代わりに、それはすべての対話のbashシェルだけでなく、ログインシェルのために実行されます。


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.