変数の概念を理解するのは簡単、環境変数を理解することは容易です。カスタム変数よりも環境変数のスコープは、シェルの環境変数は、独自およびその子に作用するよう、大きくすることができます。すべてのUNIXおよびUNIX系のシステムでは、各プロセスは、独自の環境変数の設定があり、デフォルトでは、プロセスが作成されたときに、明示的に指定作成プロセスに加えて、それはその親プロセスの必須を継承します環境設定のほとんど。シェルプログラムは、オペレーティングシステムの上でプロセスとして実行され、我々はシェルシェルのほとんどのコマンドを実行する方法は、子プロセスが実行されています。
私たちは、変数の型は、通常、三つの方法を伴います。
- 現在のシェルは、我々は現在のシェルでのみ有効作成し、上記のような民間のTMP変数ユーザー定義変数を、処理します。
- シェル自体は、内蔵された変数。
- 環境変数から派生したカスタム変数。
3つの環境変数に関連する三つのコマンドもあります:set
、env
、export
。これらの3つのコマンドが似ている、変数情報環境を印刷するために使用され、異なる変数の範囲が関与していることを除きます。以下の表:
コマンド | 説明 |
---|---|
set |
表示され、内蔵の環境変数(外観シェルに関連する)を含む、現在のシェルのすべての変数を、ユーザ定義の変数と環境変数が派生しました。 |
env |
現在のユーザーに関連付けられているディスプレイの環境変数は、また、コマンドは、指定された環境で実行することができます。 |
export |
変数の環境変数を表示するには、シェルから派生した、それはまた、環境変数のカスタム変数としてエクスポートすることができます。 |
あなたは使用することがより直感的にすることができ vimdiff
、それらの間の違いを比較するためのツールを:
$ temp=shiyanlou
$ export temp_env=shiyanlou $ env|sort>env.txt $ export|sort>export.txt $ set|sort>set.txt
上記操作コマンド導管を介して出力 |
用いて sort
、コマンドキューイング、およびテキストファイル内のオブジェクトにリダイレクト。
$ vimdiff env.txt export.txt set.txt
使用する vimdiff
エクスポートされたファイルの内容を比較するために、いくつかのツールを:
关于哪些变量是环境变量,可以简单地理解成在当前进程的子进程有效则为环境变量,否则不是(有些人也将所有变量统称为环境变量,只是以全局环境变量和局部环境变量进行区分,我们只要理解它们的实质区别即可)。我们这里用 export
命令来体会一下,先在 Shell 中设置一个变量 temp=shiyanlou
,然后再新创建一个子 Shell 查看 temp
变量的值:
注意:为了与普通变量区分,通常我们习惯将环境变量名设为大写。
永久生效
但是问题来了,当你关机后,或者关闭当前的 shell 之后,环境变量就没了啊。怎么才能让环境变量永久生效呢?
按变量的生存周期来划分,Linux 变量可分为两类:
-
永久的:需要修改配置文件,变量永久生效;
-
临时的:使用 export 命令行声明即可,变量在关闭 shell 时失效。
这里介绍两个重要文件 /etc/bashrc
(有的 Linux 没有这个文件) 和 /etc/profile
,它们分别存放的是 shell 变量和环境变量。还有要注意区别的是每个用户目录下的一个隐藏文件:
.profile 可以用 ls -a 查看
cd /home/shiyanlou
ls -a
这个 .profile 只对当前用户永久生效。而写在 /etc/profile
里面的是对所有用户永久生效,所以如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile
,在最后加上你想添加的环境变量就好