「/ bin / loginを使用して、/ etc / passwdファイルを読み取ることにより、ログイン成功後に対話型ログインシェルが開始されます。このシェル呼び出しは、通常、起動時に/ etc / profileおよびプライベートの同等の〜/ .bash_profileを読み取ります。
対話型の非ログインシェルは通常、シェルプログラム([プロンプト] $ / bin / bashなど)を使用してコマンドラインで、または/ bin / suコマンドによって起動されます。対話型の非ログインシェルは、グラフィカル環境内からxtermやkonsoleなどのターミナルプログラムでも起動されます。このタイプのシェル呼び出しは通常、親環境をコピーしてから、追加のスタートアップ構成手順についてユーザーの〜/ .bashrcファイルを読み取ります。 "
http://www.linuxfromscratch.org/blfs/view/6.3/postlfs/profile.html
したがって、bashrcには環境変数を入れません。これは一般的な慣習に反するだけでなく、グラフィカルデスクトップ環境から端末を呼び出すときにbashrcの変数も見逃してしまうからです。
Redhatで/etc/profile
このコメントを見つけました。
「システム全体のエイリアスと関数は/ etc / bashrcに配置する必要があります。個人の環境変数と起動プログラムは〜/ .bash_profileに配置する必要があります。個人のエイリアスと関数は〜/ .bashrcに配置する必要があります。」
したがって、ユーザーごとに環境変数を設定する場合は、ユーザーの.bash_profileファイルで設定します。
.bash_profile
私が読んだに向かって:
「個人環境変数と起動プログラム。
個人のエイリアスと関数は〜/ .bashrcに入れてください。システム全体の環境変数と起動プログラムは/ etc / profileにあります。システム全体のエイリアスと関数は/ etc / bashrcにあります。」
結論
たとえば、/ sbin
に存在するプログラムをrootだけに見せたい場合は、そのパスをルートの.bash_profile
ファイルに追加します。しかし、あなたは、すべてのユーザーが自分のボックスにインストールされている特定のどのようなルート番組を見たい場合、私は入れてしまうでしょう/sbin
にに/etc/.profile
。すべてのユーザーは、タブ補完を使用してルート固有のプログラムを検索し、必要に応じて権限を昇格できるようになりました。
特殊なケース:SSH
コマンドラインでsshを起動すると、対話型ログインシェルが起動します。しかし、この場合/etc/profile
は読まれません。.bash_profile
各ユーザーのファイルで環境変数を定義すると、sshで動作しました。
~/.profile
も別の有効なオプションです