Linuxでローカル、ユーザー、およびシステム全体の環境変数を設定および設定解除する方法


環境変数は、シェルで定義され、実行中にプログラムが必要とするいくつかの特別な変数です。それらは、システム定義またはユーザー定義にすることができます。システム定義変数は、システムによって設定され、システムレベルのプログラムによって使用される変数です。

たとえばPWDコマンドは、現在の作業ディレクトリを格納するために使用される非常に一般的なシステム変数です。ユーザー定義変数は通常、現在のシェルに対して一時的に、または永続的に、ユーザーによって設定されます。環境変数の設定と設定解除の概念全体は、いくつかのファイルのセットといくつかのコマンドおよび異なるシェルを中心に展開されます。

大まかに言えば、環境変数には次の3つのタイプがあります。

現在のセッション用に定義されたもの。これらの環境変数は、リモートログインセッションであれローカルターミナルセッションであれ、現在のセッションまでしか持続しません。これらの変数は、構成ファイルで指定されておらず、特別なコマンドセットを使用して作成および削除されます。

これらは、特定のユーザーに対して定義され、ユーザーがローカルターミナルセッションを使用してログインするたび、またはそのユーザーがリモートログインセッションを使用してログインするたびにロードされる変数です。これらの変数は通常、 .bashrc .bash_profile .bash_login .profile ユーザーのホームディレクトリに存在するファイル。

これらは、システム全体で、つまりそのシステムに存在するすべてのユーザーが利用できる環境変数です。これらの変数は、次のディレクトリおよびファイルに存在するシステム全体の構成ファイルに存在します: /etc/environment/etc/profile/etc/profile.d/ /etc/bash.bashrc 。これらの変数は、システムの電源がオンになり、ユーザーがローカルまたはリモートでログインするたびにロードされます。

ユーザー全体およびシステム全体の構成ファイルを理解する

ここでは、システム全体またはユーザー固有の環境変数を保持する上記のさまざまな構成ファイルについて簡単に説明します。

このファイルは、ユーザーが新しいローカルセッションを作成するたびに、つまり簡単に言えば、新しいターミナルを開くたびに読み込まれるユーザー固有のファイルです。このファイルで作成されたすべての環境変数は、新しいローカルセッションが開始されるたびに有効になります。

このファイルは、ユーザー固有のリモートログインファイルです。このファイルにリストされている環境変数は、ユーザーがリモートでログインするたびに、つまりsshセッションを使用して呼び出されます。このファイルが存在しない場合、システムは .bash_login または .profile ファイルのいずれかを探します。

このファイルは、環境変数を作成、編集、または削除するためのシステム全体のファイルです。このファイルで作成された環境変数は、ローカルとリモートの両方で、すべてのユーザーがシステム全体からアクセスできます。

システム全体の bashrc ファイル。このファイルは、ユーザーごとに1回、そのユーザーがローカルターミナルセッションを開くたびにロードされます。このファイルで作成された環境変数は、すべてのユーザーがアクセスできますが、ローカルターミナルセッションを介してのみアクセスできます。そのマシン上のユーザーがリモートログインセッションを介してリモートでアクセスされる場合、これらの変数は表示されません。

システム全体のプロファイルファイル。このファイルで作成されたすべての変数には、システム上のすべてのユーザーがアクセスできますが、そのユーザーのセッションがリモートで呼び出された場合、つまりリモートログインを介して呼び出された場合に限ります。このファイル内の変数は、ローカルログインセッションではアクセスできません。つまり、ユーザーがローカルシステムで新しい端末を開いたときです。

注:システム全体またはユーザー全体の構成ファイルを使用して作成された環境変数は、これらのファイルからのみ削除することで削除できます。これらのファイルを変更するたびに、ログアウトして再度ログインするか、端末で次のコマンドを入力して変更を有効にします。

$ source <file-name>

Linuxでローカルまたはセッション全体の環境変数を設定または設定解除する

ローカル環境変数は、次のコマンドを使用して作成できます。

$ var=value 
OR
$ export var=value

これらの変数はセッション全体であり、現在のターミナルセッションでのみ有効です。これらのセッション全体の環境変数をクリアするには、次のコマンドを使用できます。

デフォルトでは、 env コマンドは現在のすべての環境変数を一覧表示します。ただし、 '-i' スイッチとともに使用すると、一時的にすべての環境変数がクリアされ、ユーザーはすべての環境変数がない状態で現在のセッションでコマンドを実行できるようになります。

$ env –i [Var=Value]… command args…

ここで、 var u003d value は、このコマンドでのみ使用するローカル環境変数に対応します。

$ env –i bash

一時的に環境変数を持たないbashシェルを提供します。ただし、シェルを終了すると、すべての変数が復元されます。

ローカル環境変数をクリアする別の方法は、unsetコマンドを使用することです。ローカル環境変数の設定を一時的に解除するには、

$ unset <var-name>

ここで、 var-name は、設定を解除またはクリアするローカル変数の名前です。

もう1つのあまり一般的ではない方法は、クリアする変数の名前を '' (空)に設定することです。これにより、アクティブになっている現在のセッションのローカル変数の値がクリアされます。

注–システム変数またはユーザー環境変数で遊んだり、値を変更したりすることもできますが、変更は現在のターミナルセッションにのみ反映され、永続的ではありません。

Linuxでユーザー全体およびシステム全体の環境変数を作成する方法を学ぶ

このセクションでは、以下の例を使用して、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シェルを実行しました。呼び出されたbashシェルで 'exit' を入力すると、すべての変数が復元されます。

$ VAR2='TecMint is best Site for Linux Articles'
$ echo $VAR2
$ env -i bash
$ echo $VAR2   

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 ファイルの行を削除し、ファイルを再ソースします。

注:これらの変数は、現在のユーザーにログインするたびに使用できますが、他のユーザーには使用できません。

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ファイルのエントリを削除して再ソースするか、再度ログインします。

注:変更は、ファイルをソースするときに有効になります。ただし、そうでない場合は、ログアウトして再度ログインする必要がある場合があります。

結論

したがって、これらは環境変数を変更できるいくつかの方法です。同じための新しくて興味深いトリックを見つけた場合は、コメントに記載してください。