環境変数はシェルと密接に関連しています。シェルは、ユーザーがシステムにログインした後に開始されます。 Linux の場合、これは通常 bash ですが、リセットしたり、他のシェルに切り替えることもできます。 UNIX の場合は、おそらく CSshell です。環境変数はシェル コマンドを通じて設定され、設定された環境変数は現在のユーザーが実行するすべてのプログラムで使用できます。シェル プログラム bash の場合、変数名を通じて対応する環境変数にアクセスし、エクスポートを通じて環境変数を設定できます。以下にいくつかの例を示します。
1)etc/profile: このファイルは、システムの各ユーザーの環境情報を設定します。ユーザーが初めてログインするときに、このファイルが実行されます。
そして、/etc/profile 内の設定ファイルからシェル情報を収集します。 .d ディレクトリの設定。
注: ここでは、すべてのユーザーが使用できるグローバル変数を設定します。
2)/etc/bashrc: bash シェルを実行している各ユーザーに対してこのファイルを実行します。
3)~/.bash_profile: 各ユーザーがこれを使用できます。ファイル入力は次のとおりです。ユーザーがログインすると、ファイルは 1 回だけ実行されます。デフォルトでは、ユーザーはいくつかの環境変数を設定し、ユーザーの .bashrc ファイルを実行します。
注: ~LINUX では、これは HOME を表します。の変数。
さらに、異なる LINUX オペレーティング システムでは、このファイルは異なる場合があり、~/.bash_profile の 1 つ以上である場合があります。複数ある場合は、次の順序で実行します。 /.bash_profile、~/.bash_login、~/.profile。たとえば、私は Ubuntu を使用していますが、デフォルトではユーザー フォルダーには ~/.profile ファイルのみがあります。
4)~/.bashrc: このファイルには、bash シェルに固有の bash 情報が含まれています。このファイルは、ログイン時および新しいシェルを開くたびに読み取られます。
(注: このファイルは . で始まるため、隠されています。フォルダー内)
それでは、独自に定義した環境変数を追加するにはどうすればよいでしょうか?
このファイルをメモ帳で開き、最後に次のように記述します:
xiaokang=kangkang
それから保存すると、新しいターミナルを開くたびに変数が有効になります。ターミナルを開いているときにこのファイルを変更しても、その変更はこのターミナルでは反映されないことに注意してください。一般に、ユーザーがここで変更を加えるのが最善ですが、場合によっては親変数が上書きされます。たとえば、PATH は ROOT によって設定されますが、このファイルに PATH=xx と記述すると、以降のすべての PATH が変更されます。 xx. なので、このファイルに次のように記述する必要があります:
PATH=$PATH:xx
このようにして、元のものが自分のものと一緒に追加されます。 LINUX システムでは、windo ではなく、並列を意味する split を使用することに注意してください。
3 と 4 はどちらもユーザー ディレクトリにあります。それらの唯一の違いは、.bash_profile はログイン時に 1 回しか起動できないことです。これら 3 つのファイルは私の Ubuntu には存在しないようです。
5)~/.bash_logout: システムを終了する (bash シェルを終了する) たびにこのファイルを実行します。
さらに、/etc/profile に設定された変数 (グローバル) はすべてのユーザーに影響を与える可能性があり、 ~/ 変数.bashrc などに設定された (ローカル) は、/etc/profile 内の変数のみを継承できます。それらには「父子」関係があります
~/.bash_profile は、対話モードおよびログイン モードで bash 操作を開始するために使用されます
~ /.bashrc bash 操作を開始する対話型の非ログイン方法です。通常、この 2 つの設定はほぼ同じであるため、通常は前者が後者を呼び出します。
ログインシェルが bash である場合、bash はまず /etc/profile ファイル (ファイルが存在する場合) 内のコマンドを実行し、次に ~/ を順番に検索します。 .bash_profile、~/.bash_login または ~/.profile ファイルにアクセスし、最初に見つかった読み取り可能なファイル内のコマンドを実行します。ログイン中の bash が終了すると、対話型 bash の起動時に ~/.bash_logout ファイル内のコマンドが実行されます。シェル スクリプトを実行するために非対話的に起動された場合、bash は bash_env 環境変数を検索して、実行するファイルの名前を決定します
-------------- ------------------------------------ -------------- ------------------------
Linux にログインする際のファイルの実行プロセスは次のとおりです:
~/.bash_profile ファイルが存在する場合、通常は ~/.bashrc ファイルが実行されます。
通常、~/.bash_profile ファイルには次のコードがあるため:
if [ -f ~/.bashrc ] ; then
、通常は次のコードがあります:
if [ -f /etc/bashrc ] ; then
. /bashrc
fi
したがって、~/.bashrc は /etc/bashrc ファイルを呼び出します。最後に、シェルを終了するときに、~/.bash_logout ファイルも実行されます。
実行順序は次のとおりです: /etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc ->
各ファイルのスコープについては、インターネット上で以下の記述を見つけました。
(1)/etc/profile: このファイルは、ユーザーが初めてログインするときに、システムの各ユーザーの環境情報を設定します。 /etc/profile.d ディレクトリの設定ファイルからシェル設定を収集します。
(2)/etc/bashrc: bash シェルを実行しているユーザーごとにこのファイルを実行します。bash シェルが開かれると、このファイルが読み込まれます。
(3)~/.bash_profile: 各ユーザーは、このファイルを使用して自分専用のシェル情報を入力できます。デフォルトでは、ファイルはいくつかの環境変数を設定し、ユーザーのファイルを実行します。 .bashrc ファイル。
(4)~/.bashrc: このファイルには、bash シェルに固有の bash 情報が含まれています。このファイルは、ログイン時および新しいシェルが開かれるたびに読み取られます。
(5)
~/.bash_logout: システムを終了する (bash シェルを終了する) たびに、このファイルを実行します。
さらに、/etc/profile に設定された変数 (グローバル) は、すべてのユーザーに影響を与える可能性があります。 local) /.bashrc などに設定された変数は
/etc/profile 内の変数のみを継承できます。これらは「父と子」の関係になります。
(6) ~/.bash_profile は、対話型モードとログイン モードで実行される bash に入るために使用されます。 ~/.bashrc は、対話型非ログイン モードで実行される bash に入るために使用されます。通常、前者は後者を呼び出します。
/etc/profileや/etc/environmentなどの各種環境変数設定ファイルの便利さ
まず/etc/profileにexportを追加し、システムからログアウトして再度ログインすると、ログインプロンプトが英語で表示されます。
/etc/profile のエクスポートを削除し、LNAG=zh_CN を /etc/environment に追加し、システムからログアウトして再度ログインすると、ログイン プロンプトが中国語で表示されます。
ユーザー環境を構築するプロセスでは、常に最初に /etc/profile を実行し、次に /etc/environment を読み取ります。上記のような違いが生じるのはなぜでしょうか?
最初に /etc/environment を実行し、次に /etc/profile を実行する必要があります。
/etc/environment はシステム全体の環境を設定するもので、/etc/profile はログインしているユーザー全体の環境を設定するもので、前者はログインしているユーザーとは関係なく、後者はログインしているユーザーに関係します。ユーザー。
システム アプリケーションの実行はユーザー環境とは関係がないかもしれませんが、システム環境に関連しているため、ログイン時に表示される日付と時刻情報の表示形式などのプロンプト情報はシステム環境に関連しています。システム環境の LANG、デフォルト LANG=en_US、システム環境 LANG=zh_CN の場合、プロンプト情報は中国語で表示され、それ以外の場合は英語で表示されます。
ユーザーの SHELL 初期化では、/etc/profile が最初に実行され、次にファイル /etc/environment が読み取られます。システム全体では、/etc/environment が最初に実行されます。これは正しい理解ですか?
/etc/enviroment --> /etc/profile --> $HOME/.profile -->$HOME/.env (存在する場合)
/etc/profile はすべてのユーザーの環境変数です
/ etc/enviroment はシステムの環境変数です
システムにログインするときにシェルによって読み取られる順序は
/etc/profile ->/etc/enviroment -->$HOME/.profile --> である必要があります。 $HOME/.env
その理由は、jtwが言ったユーザー環境とシステム環境の違いです。ユーザー環境(/etc/profile)とシステム環境(/etc)で同じ変数の値が異なる場合です。 /environment) の場合は、ユーザー環境が優先されます。
Linux 環境変数を設定するいくつかの方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。