3

OS: ソラリス

シェル: Bash シェル

シナリオ: コマンド「env」、「export」、「set」(引数なし) を別々に入力すると、変数と値のリストが返されます。

私の質問: 3 つのコマンドを入力した後の戻り値の違いは何ですか?

4

2 に答える 2

4

およびコマンドは同じ情報を生成envexportますが、同じ形式ではありません。Andは、 or (Bourne) シェルのバージョンbashexport出力とは非常に根本的に異なる出力を生成します。とはシェルの組み込みコマンドですが、環境の内容を一覧表示する以外の用途を持つ外部コマンドであることにksh注意してください(ただし、それはその用途の 1 つです)。setexportenv

このsetコマンドは、作成した変数を一覧表示します。これには、環境変数、通常の (環境以外の) 変数、および関数定義 (ここでは無視します) が含まれます。

検討:

x1=abc
x2=def; export x2
export x3=ghi

2 つのエクスポートされた変数 (x2およびx3) と、1 つの通常の (エクスポートされていない) 変数があります。setコマンドは 3 つすべてを一覧表示します。エクスポートされたもののみをリストしますexportenv

コマンドの出力はenv、POSIX 標準によって義務付けられています。これは、変数名と値の後に改行が続くだけです。

name=value

従来、Bourne シェルは、 と の両方に対して同じ方法で変数をリストするだけsetでしexportた。

Korn シェルは、保護が必要なスペースまたはその他の文字が値に含まれている場合は値を引用符で囲みますが、それ以外の場合はname=value表記法を使用します。

setコマンドはbash、値が引用符で囲まれた割り当てを生成します。ただし、出力exportdeclare -x var=value引用符付きで保護されています。export > file一般的な考え方は、おそらくsource file、環境変数を、export.


概要

  1. すべてのシェル変数が環境変数であるとは限りません。
  2. コマンドはすべてのsetシェル変数をリストし、関数もリストする場合があります。
  3. このexportコマンドは、環境変数を一覧表示します。
  4. およびコマンドはシェルに組み込まれていますsetexport
  5. 引数のenvないコマンドは、それを実行したプロセスから継承した環境を一覧表示します。
于 2013-03-07T05:04:02.570 に答える
0

このsetコマンドは、セッションで定義されたすべてのシェル変数を表示します。

このexportコマンドは、上記のサブセット (通常) をリストします。これらは、 または のいずれかで作成されますexportdeclare -xグローバルに表示される変数 (つまり、子プロセスに表示される)。

このenvコマンドは、アカウントから別のアカウント、またはマシンからマシンへのスクリプトの移植を有効にするために使用されます。env は、変更された環境または異なる環境でプログラムを実行します。

于 2013-03-07T03:13:12.707 に答える