非シェルプロセスのシェル変数はありますか?

非シェルプロセスのシェル変数はありますか?

シェル(例:bashシェル)には、シェル変数の概念と環境変数の概念があります。

しかし、他の非シェルプロセス(Firefox、geditなど)はどうですか?これらのプロセスにもシェル変数がありますか、それとも環境変数だけですか?

ベストアンサー1

非シェルプロセスにはシェル変数はありません。 CプログラムにはC変数があり、awkプログラムには変数がありawk、PerlプログラムにはPerl変数があります。これらの変数はすべて、独自の方法でシェル変数とは大きく異なります。

他のプロセスがシェル変数を持たない、またはシェル変数にアクセスできない理由は、シェル変数がエクスポートされないため(つまり環境変数ではない)ため、一部のシェルではシェル変数よりも多くの情報をシェル変数に追加できる可能性があります。だからです。 1つのシェル変数。読み取り専用変数、整数変数などの属性などの文字列値これらの型属性(組み込みtypesetコマンドを参照)は、環境変数には適用できません。そして使用される別のプロセスで。

一部のシェル(例bash:)は、配列と関連配列もサポートしています。これらの構造は、キー(変数名)と値の両方が環境変数に適用されるプレーンテキスト文字列である単純なキーと値のペアの形式と比較して複雑すぎます。つまり、共通環境で他のプロシージャと一緒に使用するためにエクスポートすることはできません。

すべてのプロセスは、親プロセスから継承された環境変数にアクセスできます。言語に応じて、プログラムはさまざまな方法でこのコンテンツにアクセスできます。

たとえば、ACプログラムはそれを使用でき、プログラムはgetenv()連想awk配列を使用できENVIRON、Perlプログラムはハッシュを使用して環境変数にアクセスできます。%ENV

よくわかりませんが、geditシェルvimに似た構文を使用して環境変数にアクセスできます。

:echo $HOME

例えば。ここではシェルとは何の関係もなく、echo同様の方法で動作します。echoさらに、文字列はユーザ​​ーに環境変数を公開する方法$HOMEでもあります。vim

おすすめ記事