あなたはWindowsの背景から来ていると思います。ですから、私はそれらを対照します(私はLinuxにはまったく新しいです)。私は自分のコメントにユーザーの返答を見つけたので、物事を理解するのに便利です。
Windowsでは、変数は永続的であってもなくてもかまいません。環境変数という用語には、SETコマンドを使用してcmdシェルに設定された変数と、Windows GUI内で変数が設定されてレジストリに設定され、新しいcmdウィンドウで表示可能になる変数が含まれます。例えば "環境変数を表示、設定、または削除します。パラメータなしで使用すると、setは現在の環境設定を表示します。 Linuxでは、setは環境変数を表示せず、呼び出さない/シェル変数を環境変数として表示します。また、Linuxは変数を設定するために(私が最後にメモとして説明する位置パラメータとシェルオプションを除いて)変数を設定するのではなく、それらを表示するだけで、シェル変数を表示するだけです。 Windowsは例えば設定および表示のためにセットを使用する。 a = 5を設定すると、linuxはそうではありません。
Linuxでは、起動時に変数を設定するスクリプトを作成することができました。 /etc/profile
または/etc/.bashrc
ですが、それ以外の場合は永続的ではありません。それらはRAMに保存されています。
シェル変数と環境変数の間には、Linuxでは区別があります。 Linuxでは、シェル変数は現在のシェルにのみあり、環境変数はそのシェルとすべての子シェルにあります。
set
コマンドでシェル変数を表示できます(ただし、ウィンドウと異なり、変数はlinuxでsetコマンドで設定されていません)。
set -o posix; set
(最初に一度設定した-o posixは、あまりにも多くの不要なものを表示しません)。したがって、set
はシェル変数を表示します。
あなたは
シェル変数は、例えばに設定されているenv
コマンドで環境変数を表示することができますただa=5
環境変数が輸出で設定され、輸出もここでは、ZZZ = 5で設定したシェル変数ZZZを参照してください、とset
を実行しているとき、それは示して見るが、環境として表示されませんシェル変数
を設定し、変数。
ここでは、yyyがエクスポートで設定されていることがわかります。したがって、環境変数です。そして、それは
$ zzz=5
$ set | grep zzz
zzz=5
$ env | grep zzz
$ export yyy=5
$ set | grep yyy
yyy=5
$ env | grep yyy
yyy=5
$
シェル変数と環境変数の両方の下で他の有用なスレッドを少し詳しく説明し、私に多少の修正である一点ノート・
https://unix.stackexchange.com/questions/176001/how-can-i-list-all-shell-variables
https://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference
を示しご覧くださいlinux bashでは、 'set'を使って「位置パラメータ」と「シェルオプション/属性」を設定でき、技術的にはそれらの両方が変数ですが、マニュアルページはそうではないかもしれませんそのように説明する。しかし、前述のように、setはシェル変数や環境変数を設定しません)。 set asdf
を実行すると$ 1がasdfに設定され、echo $1
を実行するとasdfが表示されます。 set a=5
を実行すると、変数aを5に設定しません。位置パラメータ$ 1を文字列 "a = 5"に設定します。ですから、Linuxでa = 5と設定したことがあったのであれば、実際に誰かが$ 1の文字列a = 5を必要としない限り間違いでしょう。 linuxのセットが設定できるもう一つのものはシェルオプション/属性です。 -oを設定すると、それらのリストが表示されます。例えば、set -o verbose
をオフにすると、詳細をオンにすることができます(デフォルトはオフになっていますが、これには違いはありません)。または、詳細表示をオフにするにはset +o verbose
を実行します。 Windowsはそのsetコマンドにそのような使用法はありません。
これは、使用したエクスポートコマンドの詳細について述べた場合に役立ちます。コンテキストがなければ、環境変数を設定していたと思います。 http://en.wikipedia.org/wiki/Environment_variable#Unix –
を参照してください。[bash:エクスポートの有無にかかわらず変数を定義する](http://stackoverflow.com/questions/1158091/bash-defining-a-変数付き、またはエクスポートなし) – tripleee
[unix exportコマンド]の重複可能性(http://stackoverflow.com/questions/7328223/unix-export-command) –