環境変数 シェルで定義され、実行中にプログラムが必要とするいくつかの特別な変数です。それらは、システム定義またはユーザー定義にすることができます。システム定義変数は、システムによって設定され、システムレベルのプログラムによって使用される変数です。
たとえばPWDコマンドは、現在の作業ディレクトリを格納するために使用される非常に一般的なシステム変数です。ユーザー定義変数は通常、現在のシェルに対して一時的に、または永続的に、ユーザーによって設定されます。環境変数の設定と設定解除の全体的な概念は、いくつかのファイルのセットといくつかのコマンドおよび異なるシェルを中心に展開されます。
大まかに言うと、環境変数には次の3つのタイプがあります。
1。ローカル環境変数
現在のセッション用に定義されたもの。これらの環境変数は、リモートログインセッションであれローカルターミナルセッションであれ、現在のセッションまでしか持続しません。これらの変数は構成ファイルで指定されておらず、特別なコマンドセットを使用して作成および削除されます。
2。ユーザー環境変数
これらは、特定のユーザーに対して定義され、ユーザーがローカルターミナルセッションを使用してログインするたび、またはそのユーザーがリモートログインセッションを使用してログインするたびにロードされる変数です。これらの変数は通常、次の構成ファイルに設定され、そこからロードされます: .bashrc
、 .bash_profile
、 .bash_login
、 .profile
ユーザーのホームディレクトリにあるファイル。
3。システム全体の環境変数
これらは、システム全体で、つまりそのシステムに存在するすべてのユーザーが利用できる環境変数です。これらの変数は、次のディレクトリおよびファイルに存在するシステム全体の構成ファイルに存在します: / etc / environment
、 / etc / profile
、 /etc/profile.d/
、 /etc/bash.bashrc
。これらの変数は、システムの電源がオンになり、ユーザーがローカルまたはリモートでログインするたびに読み込まれます。
ユーザー全体およびシステム全体の構成ファイルについて
ここでは、システム全体またはユーザー固有の環境変数を保持する上記のさまざまな構成ファイルについて簡単に説明します。
.bashrc
このファイルは、ユーザーが新しいローカルセッションを作成するたびに、つまり簡単に言えば、新しいターミナルを開くたびに読み込まれるユーザー固有のファイルです。このファイルで作成されたすべての環境変数は、新しいローカルセッションが開始されるたびに有効になります。
.bash_profile
このファイルは、ユーザー固有のリモートログインファイルです。このファイルにリストされている環境変数は、ユーザーがリモートでログインするたびに、つまりsshセッションを使用して呼び出されるたびに呼び出されます。このファイルが存在しない場合、システムは .bash_login
のいずれかを探します または.profile
ファイル。
/ etc / environment
このファイルは、環境変数を作成、編集、または削除するためのシステム全体のファイルです。このファイルで作成された環境変数は、ローカルとリモートの両方で、すべてのユーザーがシステム全体からアクセスできます。
/etc/bash.bashrc
システム全体のbashrc
ファイル。このファイルは、ユーザーごとに1回ロードされ、そのユーザーがローカルターミナルセッションを開くたびにロードされます。このファイルで作成された環境変数は、すべてのユーザーがアクセスできますが、ローカルターミナルセッションを介してのみアクセスできます。そのマシン上のユーザーがリモートログインセッションを介してリモートでアクセスされる場合、これらの変数は表示されません。
/ etc / profile
システム全体のプロファイルファイル。このファイルで作成されたすべての変数には、システム上のすべてのユーザーがアクセスできますが、そのユーザーのセッションがリモートで呼び出された場合、つまりリモートログインを介した場合に限ります。このファイルの変数は、ローカルログインセッションではアクセスできません。つまり、ユーザーがローカルシステムで新しい端末を開いたときです。
$ source <file-name>
Linuxでローカルまたはセッション全体の環境変数を設定または設定解除する
ローカル環境変数 次のコマンドを使用して作成できます:
$ var=value OR $ export var=value
これらの変数はセッション全体であり、現在のターミナルセッションでのみ有効です。これらのセッション全体の環境変数をクリアするには、次のコマンドを使用できます。
1。 envの使用
デフォルトでは、 "env"
コマンドは、現在のすべての環境変数を一覧表示します。ただし、'-i'
と一緒に使用する場合 スイッチを押すと、すべての環境変数が一時的にクリアされ、すべての環境変数がない場合でも、ユーザーは現在のセッションでコマンドを実行できます。
$ env –i [Var=Value]… command args…
ここでは、 var =value
このコマンドでのみ使用するローカル環境変数に対応します。
$ env –i bash
一時的に環境変数を持たないbashシェルを提供します。ただし、シェルを終了すると、すべての変数が復元されます。
2。 unsetを使用する
ローカル環境変数をクリアする別の方法は、unsetコマンドを使用することです。ローカル環境変数の設定を一時的に解除するには、
$ unset <var-name>
ここで、 var-name
設定を解除またはクリアするローカル変数の名前です。
3。変数名を「」に設定します
もう1つのあまり一般的ではない方法は、クリアする変数の名前を''
に設定することです。 (空)。これにより、アクティブになっている現在のセッションのローカル変数の値がクリアされます。
Linuxでユーザー全体およびシステム全体の環境変数を作成する方法を学ぶ
このセクションでは、以下の例を使用して、Linuxでローカル、ユーザー、およびシステム全体の環境変数を設定または設定解除する方法を学習します。
1。 Linuxでのローカル変数の設定と設定解除
a。) ここでは、ローカル変数 VAR1
を作成します 任意の値に設定します。次に、unsetを使用してそのローカル変数を削除し、最後にその変数を削除します。
$ VAR1='TecMint is best Site for Linux Articles' $ echo $VAR1 $ unset VAR1 $ echo $VAR1
b。) ローカル変数を作成する別の方法は、 export
を使用することです。 指図。作成されたローカル変数は、現在のセッションで使用できます。変数の設定を解除するには、変数の値を''
に設定するだけです。 。
$ export VAR='TecMint is best Site for Linux Articles' $ echo $VAR $ VAR= $ echo $VAR
c。) ここでは、ローカル変数 VAR2
を作成しました 値に設定します。次に、すべてのローカルおよびその他の環境変数を一時的にクリアするコマンドを実行するために、'env –i'
を実行しました。 指図。ここでのこのコマンドは、他のすべての環境変数をクリアすることによってbashシェルを実行しました。 'exit'
を入力した後 呼び出されたbashシェルでは、すべての変数が復元されます。
$ VAR2='TecMint is best Site for Linux Articles' $ echo $VAR2 $ env -i bash $ echo $VAR2
2。 Linuxでのユーザー全体の環境変数の設定と設定解除
a。) .bashrc
を変更します 追加する必要のある環境変数をエクスポートまたは設定するには、ホームディレクトリのファイルを作成します。その後、ソース 変更を有効にするためのファイル。次に、変数('CD'
私の場合)、有効になります。この変数は、このユーザーの新しい端末を開くたびに使用できますが、リモートログインセッションでは使用できません。
$ vi .bashrc
次の行を.bashrc
に追加します 下部にファイルがあります。
export CD='This is TecMint Home'
次のコマンドを実行して、新しい変更を加えてテストします。
$ source .bashrc $ echo $CD
この変数を削除するには、 .bashrcの次の行を削除するだけです。 ファイルを作成して再ソースします:
b。) リモートログインセッションで使用できる変数を追加するには(つまり、リモートシステムからユーザーにsshを実行する場合)、 .bash_profile
を変更します。 ファイル。
$ vi .bash_profile
次の行を.bash_profile
に追加します 下部にファイルがあります。
export VAR2='This is TecMint Home'
このファイルをソーシングする場合、このユーザーにsshを実行すると変数が使用可能になりますが、新しいローカル端末を開くときは使用できません。
$ source .bash_profile $ echo $VAR2
ここでは、 VAR2
は最初は利用できませんが、ローカルホストでユーザーにsshを実行すると、変数が利用可能になります。
$ ssh [email protected] $ echo $VAR2
この変数を削除するには、 .bash_profile
の行を削除するだけです。 追加したファイルを再ソースします。
3。 Linuxでのシステム全体の環境変数の設定と設定解除
a。) システム全体のログインなし変数(つまり、いずれかのユーザーが新しいターミナルを開いたときにすべてのユーザーが使用できるが、マシンのユーザーがリモートアクセスされているときは使用できない変数)を追加するには、変数を/etc/bash.bashrcに追加します。コード> ファイル。
export VAR='This is system-wide variable'
その後、ファイルを入手します。
$ source /etc/bash.bashrc
これで、この変数は、すべてのユーザーが新しい端末を開いたときに使用できるようになります。
$ echo $VAR $ sudo su $ echo $VAR $ su - $ echo $VAR
ここでは、同じ変数を rootで使用できます 通常のユーザーと同様にユーザー。これは、他のユーザーにログインして確認できます。
b。) マシン上のユーザーのいずれかがリモートでログインしているときに環境変数を使用できるようにしたいが、ローカルマシンで新しい端末を開いていない場合は、ファイルを編集する必要があります– '/ etc / profile'
。
export VAR1='This is system-wide variable for only remote sessions'
変数を追加したら、ファイルを再ソースします。その後、変数が使用可能になります。
$ source /etc/profile $ echo $VAR1
この変数を削除するには、 / etc / profile
から行を削除します ファイルを作成して再ソースします。
c。) ただし、システム全体で利用できる環境を追加する場合は、リモートログインセッションとすべてのユーザーのローカルセッション(つまり、新しいターミナルウィンドウを開く)の両方で、変数をにエクスポートするだけです。 / etc / environment ファイル。
export VAR12='I am available everywhere'
その後、ファイルを入手するだけで、変更が有効になります。
$ source /etc/environment $ echo $VAR12 $ sudo su $ echo $VAR12 $ exit $ ssh localhost $ echo $VAR12
ここで、環境変数は通常のユーザー、rootユーザー、およびリモートログインセッション(ここでは localhost )で使用できます。 。
この変数をクリアするには、 / etc / environmentのエントリを削除するだけです。 ファイルを作成して再ソースするか、再度ログインします。
結論
したがって、これらは環境変数を変更するためのいくつかの方法です。同じための新しくて興味深いトリックを見つけた場合は、コメントに記載してください。