Linux でローカル、ユーザー、およびシステム全体の環境変数を設定および設定解除する方法
環境変数は、シェルで定義され、プログラムの実行中に必要となるいくつかの特別な変数です。これらはシステム定義またはユーザー定義にすることができます。システム定義変数は、システムによって設定され、システム レベルのプログラムによって使用される変数です。
たとえば、 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/環境
このファイルは、環境変数を作成、編集、削除するためのシステム全体のファイルです。このファイルで作成された環境変数は、ローカルとリモートの両方で、すべてのユーザーがシステム全体からアクセスできます。
/etc/bash.bashrc
システム全体の bashrc
ファイル。このファイルは、ユーザーごとに 1 回、ユーザーがローカル ターミナル セッションを開くたびにロードされます。このファイルで作成された環境変数には、すべてのユーザーがアクセスできますが、ローカルの端末セッションを介してのみアクセスできます。そのマシン上のユーザーがリモート ログイン セッションを介してリモートにアクセスされる場合、これらの変数は表示されません。
/etc/プロファイル
システム全体のプロファイル ファイル。このファイルで作成されたすべての変数には、システム上のすべてのユーザーがアクセスできますが、そのユーザーのセッションがリモートで呼び出された場合、つまりリモート ログイン経由でのみアクセスできます。このファイル内の変数は、ローカル ログイン セッションではアクセスできません。つまり、ユーザーがローカル システムで新しいターミナルを開いたときです。
注:システム全体またはユーザー全体の設定ファイルを使用して作成された環境変数は、それらを削除することで削除できます。これらのファイルからのみ。これらのファイルを変更するたびに、ログアウトして再度ログインするか、ターミナルで次のコマンドを入力して変更を有効にします。
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の使用
ローカル環境変数をクリアするもう 1 つの方法は、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.) ローカル変数を作成するもう 1 つの方法は、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
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 tecmint@localhost
echo $VAR2
この変数を削除するには、追加した .bash_profile
ファイル内の行を削除し、ファイルを再ソースします。
注: これらの変数は、現在のユーザーがログインするたびに使用できますが、他のユーザーは使用できません。
3. Linux でシステム全体の環境変数を設定および設定解除する
a.) システム全体のログインなし変数 (つまり、ユーザーのいずれかが新しいターミナルを開いたときにすべてのユーザーが使用できるが、マシンのユーザーがリモート アクセスされているときは使用できない変数) を追加するには、変数を < に追加します。code>/etc/bash.bashrc ファイル。
export VAR='This is system-wide variable'
その後、ファイルをソースします。
source /etc/bash.bashrc
これで、すべてのユーザーが新しい端末を開いたときにこの変数を利用できるようになります。
echo $VAR
sudo su
echo $VAR
su -
echo $VAR
ここでは、 通常のユーザーだけでなくルート ユーザーも同じ変数を使用できます。他のユーザーにログインすると、これを確認できます。
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 ユーザー、およびリモート ログイン セッション (ここではローカルホスト) で使用できます。
この変数をクリアするには、/etc/environment ファイル内のエントリを削除してリソースを再設定するか、再度ログインします。
注: 変更は、ファイルをソースするときに有効になります。ただし、そうでない場合は、ログアウトして再度ログインする必要がある場合があります。
結論
したがって、これらは環境変数を変更できる数少ない方法です。同じための新しくて興味深いトリックを見つけた場合は、コメントで言及してください。