私はあなたが窓の背景から来ていると思います。だから私はそれらを対比します(私もLinuxに少し慣れていません)。コメントに対するユーザーの返信は、物事を理解するのに役立つことがわかりました。
Windowsでは、変数は永続的である場合とそうでない場合があります。環境変数という用語には、SETコマンドを使用してcmdシェルで設定された変数と、変数がWindows GUI内で設定され、レジストリで設定され、新しいcmdウィンドウで表示できるようになる変数が含まれます。例:Windowsのsetコマンドのドキュメント https://technet.microsoft.com/en-us/library/bb490998.aspx 「環境変数を表示、設定、または削除します。パラメーターなしで使用すると、setは現在の環境設定を表示します。」Linuxでは、setは環境変数を表示せず、環境変数として呼び出さない/参照しないシェル変数を表示します。また、Linuxは、変数を設定するためにsetを使用せず(最後に注記として説明する位置パラメーターとシェルオプションを除く)、それらを表示するためだけに、さらにはシェル変数を表示するためだけに使用します。Windowsは設定と表示にsetを使用します。たとえば、set a = 5ですが、Linuxは使用しません。
Linuxでは、私は、例えば、あなたが起動時にセット変数というスクリプトを作ることができると思います/etc/profile
か、/etc/.bashrc
そうでなければ、彼らは永久的ではないです。それらはRAMに保存されます。
Linuxでは、シェル変数と環境変数に違いがあります。Linuxでは、シェル変数は現在のシェルにのみ存在し、環境変数はそのシェルとすべての子シェルに存在します。
set
コマンドを使用してシェル変数を表示できます(ただし、Windowsとは異なり、Linuxではsetコマンドを使用して変数を設定しないことに注意してください)。
set -o posix; set
(最初にそのset -o posixを実行すると、不要なものがあまり表示されなくなります)。したがって、set
シェル変数を表示します。
env
コマンドで環境変数を表示できます
シェル変数は、たとえば a = 5
環境変数はexportで設定され、exportはシェル変数も設定します
ここでは、zzz = 5に設定されたシェル変数zzzset
が表示され、実行時に表示されますが、環境変数としては表示されません。
ここでは、yyyがexportで設定されているので、これは環境変数です。そして、シェル変数と環境変数の両方の下に表示されていることを確認してください
$ zzz=5
$ set | grep zzz
zzz=5
$ env | grep zzz
$ export yyy=5
$ set | grep yyy
yyy=5
$ env | grep yyy
yyy=5
$
他の便利なスレッド
/unix/176001/how-can-i-list-all-shell-variables
/ubuntu/26318/environment-variable-vs-shell-variable-whats-the-difference
注-少し詳しく説明し、私が書いたものをいくらか修正する1つのポイントは、Linux bashでは、「set」を使用して「位置パラメーター」と「シェルオプション/属性」を設定でき、技術的には両方を設定できることです。これらは変数ですが、manページではそのように説明されていない場合があります。ただし、前述のように、setはシェル変数または環境変数を設定しません)。もしそうなら set asdf
、それは空自に$ 1設定し、あなたがしなければecho $1
、あなたは空自を参照してください。もしあなたがそうするならset a=5
変数aは5に設定されません。位置パラメータ$ 1は「a = 5」の文字列に等しく設定されます。したがって、Linuxでset a = 5を見たことがあれば、誰かが実際に$ 1でその文字列a = 5を望んでいない限り、おそらく間違いです。Linuxのセットで設定できるもう1つのことは、シェルのオプション/属性です。-oを設定すると、それらのリストが表示されます。また、たとえばset -o verbose
、offを実行して、詳細をオンにすることができます(ただし、デフォルトではオフになっていますが、これに違いはありません)。または、set +o verbose
詳細をオフにすることもできます。Windowsには、setコマンドのそのような使用法はありません。