linuxでの環境変数とシステムの環境変数のロード順序

6223 ワード

一、システム環境変数:
/etc/profile:このファイルには、PATH、USER、LOGNAME、MAIL、INPUTRC、HOSTNAME、HISTSIZE、umaskなど、いくつかの重要な変数がプリセットされています.
/etc/bashrc:このファイルは主にumaskとPS 1をプリセットします.このPS 1は私たちが命令を叩くとき、前の文字です.例えば[root@localhost~]#,bash shellが開かれるとそのファイルが読み出される
二、ユーザー環境変数:
.bash_profile:ユーザーのパーソナルパスと環境変数のファイル名を定義します.各ユーザは、自分で使用するshell情報を入力するためにこのファイルを使用することができ、ユーザがログインすると、ファイルは1回しか実行されません.(このファイルには.bashrcを実行するスクリプトがあります)
.bashrc:このファイルには、あなたのshell専用のbash情報が含まれています.ログイン時および新しいshellを開くたびに、ファイルが読み込まれます.たとえば、ユーザーがカスタマイズしたaliasまたはカスタム変数をこのファイルに書き込むことができます.
.bash_history:コマンド履歴を記録します.
.bash_logout:shellを終了すると、ファイルが実行されます.いくつかの整理作業をこのファイルに入れることができます.
三、centos 6の起動過程:
1、カーネルブート
コンピュータが電源を入れると、まずBIOSがPOSTし、BIOSに設定されている起動デバイス(通常はハードディスク)に従って起動します.次に起動装置上のgrubプログラムによりLinuxの起動が開始され、起動プログラムが起動タスクを正常に完了した後、Linuxはそれらの手からCPUの制御権を引き継ぎ、その後、CPUはLinuxのコアイメージコードを実行し始め、Linuxの起動プロセスを開始した.いわゆるカーネルブートが開始され、カーネルブートの過程では複雑ですが、ブラックボックスだと思っています.どうせLinuxカーネルが一連の作業を行い、最後にカーネル呼び出しがinitプログラムをロードし、カーネルブートの作業が完了します.次の主役に任せた
2、initの実行
Initプロセスはシステムのすべてのプロセスの起点で、あなたはそれをシステムのすべてのプロセスの祖先に比べることができて、このプロセスがなくて、システムの中でいかなるプロセスも起動しません.Initの最も主要な機能は、システムのホスト名、ネットワーク設定、言語、ファイルシステムフォーマット、その他のサービスの起動など、ソフトウェア実行環境を準備することです.すべてのアクションはinitのプロファイル/etc/inittabによって計画されますが、inittabにはデフォルトのrunlevel(起動実行レベル)という重要な設定があります.まず、実行レベルRunレベルを見てみましょう.Linuxはrunレベルを設定することで、システムが異なるサービスを使用することを規定して起動し、Linuxの使用環境を異なるものにします.このinittabファイルのサポートレベルを見てみましょう.
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

 
Inittabプロファイルのフォーマットは、以前の古いバージョンCentOS 5以降と大きく変更されています.Runlevelsは7つのレベルで、0はシャットダウン、1はシングルユーザー、2はネットワークのないコマンドラインレベル、3はコマンドラインレベル(ほとんどのサーバでこのレベル)、4は保存レベル、5はグラフィックスレベル、6は再起動です.このファイルには、最後の行を除いてコメント行、すなわち最後の行がキーであり、サーバがどのレベルを走るかを指定するために使用されます.ここでは、2,3,5を設定できる以外のレベルは設定できません.このファイルの前のセクションでは、多くの行がプロファイルに言及されていますが、すべてのプロファイルは/etc/init/ディレクトリの下にあります.
3、システム初期化
システムの初期化は、/etc/init/の各プロファイルを実行することです.Inittabプロファイルには、「System initialization is started by/etc/init/rcS.conf」という行があります.つまり、システム初期化は、/etc/init/rcS.を先に実行します.confは、このプロファイルに「exec/etc/rc.d/rc.sysinit」という行があるため、重心がこのrcに移行する.Sysinitファイルでは、交換パーティションのアクティブ化、ディスクのチェック、ハードウェアモジュールのロード、およびその他の優先的なタスクの実行が必要です.rc.Sysinitプログラムの実行が完了すると、initに戻って次のステップに進み、また/etc/init/rcに着きます.conf,このプロファイルでは,最も重要な動作は「exec/etc/rc.d/rc$RUNLEVEL」であり,$RUNLEVELは/etc/inittabで定義されている(一番下の行)、阿銘の/etc/inittabを例に$RUNLEVE=3を表すので,このとき「/etc/rc.d/rc 3」が実行される場合は実際には/etc/rc.d/rc3.d/の下のスクリプトはすべて実行され、その後/etc/rc.d/rc.localも実行されます.通常、起動実行のコマンドをこのスクリプトの下に置きます.サービスの実行が完了すると、システムの初期化も完了します.次に端末を確立します.
4、端末の確立
端末を確立するのは、プロファイル/etc/init/ttyである.conf,/etc/init/serial.confや/etc/sysconfig/initなどのプロファイルで完了します.2、3、4、5の実行レベルではrespawn方式でmingettyプログラムが実行され、mingettyプログラムは端末を開き、モードを設定できます.同時に、テキストログインインタフェースが表示されます.このインタフェースはよく見られるログインインタフェースです.このログインインタフェースでは、ユーザーにユーザー名の入力を要求し、ユーザーが入力したユーザーはパラメータとしてloginプログラムに渡されてユーザーのアイデンティティを検証します.
5、ユーザー登録システム
実行レベル5のグラフィックユーザにとって、ログインはグラフィック化されたログインインタフェースを介して行われる.ログインに成功すると、KDE、Gnomeなどのウィンドウマネージャに直接アクセスできます.本文は主にテキスト方式でログインする場合です.mingettyのログインインタフェースを見ると、ユーザー名とパスワードを入力してシステムにログインすることができます.
Linuxのアカウント検証プログラムはloginで、loginはmingettyから送られてきたユーザー名をユーザー名パラメータとして受信します.その後、loginはユーザー名を分析します.ユーザー名がrootでなく、「/etc/nologin」ファイルが存在する場合、loginはnologinファイルの内容を出力し、終了します.これは、通常、システムメンテナンス時にroot以外のユーザーのログインを防止するために使用されます.「/etc/securetty」に登録されている端末のみrootユーザーのログインが許可されます.このファイルが存在しない場合、rootは任意の端末にログインできます.」/etc/userttyファイルは、ユーザーへの追加アクセス制限に使用されます.このファイルが存在しない場合は、他の制限はありません.
ユーザー名の分析が完了すると、loginは「/etc/passwd」および「/etc/shadow」を検索してパスワードを検証し、メインディレクトリが何なのか、shellが使用されているのかなど、アカウントの他の情報を設定します.ホームディレクトリが指定されていない場合は、デフォルトはルートディレクトリです.shellが指定されていない場合は、デフォルトは「/bin/bash」です.
loginプログラムが成功すると、対応する端末に最近ログインした情報(「/var/log/lastlog」に記録されている)を出力し、ユーザーに新しいメールがあるかどうかを確認します(「/usr/spool/mail/」の対応するユーザー名ディレクトリの下).次に、bashの場合、システムはまず「/etc/profile」スクリプトファイルを探して実行します.次に、ユーザーのホームディレクトリに.bash_profileファイルが存在する場合は、実行.bashrcのスクリプトがあるファイルを実行します.これらのファイルでは、他のプロファイルが呼び出される可能性があります.すべてのプロファイルが実行されると、さまざまな環境変数も設定され、よく知られているコマンドラインプロンプトが表示され、起動プロセス全体が終了します.
実行順序:/etc/profile->~/.bash_profile -> ~/.bashrc ->/etc/bashrc -> ~/.bash_logout
転載先:https://www.cnblogs.com/tiandi/p/11317083.html