• ベストアンサー

export と set は違うの?

export X=a は環境変数 set Y=b はシェル変数 を設定すると聞きました。 この二つは違うのでしょうか・・。 具体例があると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

sh,bashでは、 シェル変数=値 export 環境変数=値 csh,tcshでは、 set シェル変数=値 setenv シェル変数 値 です。 シェル変数はシェルの設定を変更したり、シェルスクリプトで変数に使ったりします。環境変数は、シェルから起動したコマンドの動作を変えたりします。 bashの例: PS1='abc$ ' プロンプトを変更します。 for i in `set 20`;do echo $i;done ループの変数 date 日付は日本語形式で表示 export LC_TIME=C 日付表示形式をデフォルトにします date 日付は英語形式で表示

white-tiger
質問者

お礼

例をありがとうございます。 よく分かった気がします。

その他の回答 (2)

  • entree
  • ベストアンサー率55% (405/735)
回答No.2

export X=b は sh の拡張機能で、元々は X=b; export X です。X=b がシェル変数 X に値 b を代入すると言うものであり、export X はシェル変数 X を環境変数に設定するためのコマンドです。環境変数に設定すると、そこから呼ばれたプログラム (サブ・プログラム) もその変数 X の値を参照することができます (逆に言えば、export して環境変数に指定ないとサブ・プログラムからその変数 X の値を参照することはできません)。 なお、複数の変数をまとめて export することも可能です。 export X=b export Y=c は、 X=b; Y=c; export X Y と書けます。 一方、 set Y=b というのは csh でシェル変数を設定するためのコマンドです。csh の場合で環境変数を設定したい場合は、 setenv Y b と書きます (Y と b の間に"="がないことに注意)。 なお、現在のシェルで設定されているシェル変数と環境変数は、それぞれ set、env コマンドで確認できます。

white-tiger
質問者

お礼

sub process に export できるシェル変数が環境変数、という漢字でしょうか。 ありがとうございます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

環境変数は、プロセス毎に異なるということで、 あるプロセスでset によって作った環境変数(シェル変数のこと)は、 そのままでは、他からは見ることができないが set Y=b した後に export Y (エクスポート:輸出?)してやると、サブ(呼び出した)プロセスからも使えるようになる という感じでしょうか

関連するQ&A