シェルは一般変数をどこに割り当てますか?

シェルは一般変数をどこに割り当てますか?

ご存知のように、bashシェル自体はプロセスです。

commandを使用すると、シェルは環境変数がある場所にexport a=c変数を動的に割り当てます。a(この環境部分はプロセスのメモリ記述子に記述されています。)ので、a環境部分に変数が割り当てられていると思います。または、コマンドから検索できます。printenv

ただし、 command を使用する場合は をb=f使用echo $bし、変数拡張操作を実行します。結果はですf。この変数はどこから来たのですか?

コマンドを使用すると、echo $aシェルが環境変数セクションでこの変数をロードすることを理解できます。

しかし、commandを使用すると、echo $bシェルはこの変数をどこにロードしますか?プロセスのヒープ部分ですか、それとも別の場所ですか?

ベストアンサー1

すべてのシェル変数は同じリポジトリにあります。

起動時にすべての環境変数を取得します。

新しいコマンドが開始されると、新しいコマンドの新しい環境が作成されます。エクスポートとしてマークされたすべての変数または元の環境からインポートされた変数は、新しいコマンドに関連付けられた新しい環境に配置されます。

おすすめ記事