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