env、setenv、エクスポートと使用時期の違いは何ですか?

env、setenv、エクスポートと使用時期の違いは何ですか?

最近、環境変数の設定には3つのオプションがあることがわかりました。

  1. export envVar1=1
  2. setenv envVar2=2
  3. env envVAr3=3

他の方法があれば教えてください。

いつ他のものよりも1つを選択する必要がありますか?ガイドラインを提案してください。

シェルの互換性に関して、どれが最も広範囲ですか(より多くのシェル方言を含む)?

私はこれに気づいた回答envしかし、私は好みガイドを使ってこの質問を拡張したいと思います。

ベストアンサー1

export VARIABLE_NAME='some value'shPOSIX互換シェル(、、dashなどbash、zsh)kshで環境変数を設定する方法。変数にすでに値がある場合は、export VARIABLE_NAME値を変更せずに環境変数にすることができます。

POSIX 以前のバージョンボンシェルこれはサポートされていないため、export VARIABLE_NAME='some value'代わりに使用せずに使用するスクリプトが表示されますVARIABLE_NAME='some value'; export VARIABLE_NAME。しかし、POSIX以前のBourneシェルは今日非常にまれです。

setenv VARIABLE_NAME='some value'環境変数を設定するためのcsh構文。setenvshには存在せず、cshはスクリプトでほとんど使用されず、過去20年間(zshはより長い間)対話型の使用でbashを上回ったため、遭遇しない限り忘れることができます。

このenvコマンドは、以下を除いてほとんど役に立ちません。シェルボーンライン。引数なしで呼び出すと、環境が表示されますが、exportより良いです(値の改行と値を区切る改行を明確にするために並べ替えられ、しばしば引用されます)。引数を使用して呼び出すと、追加の環境変数を使用してコマンドを実行しますが、env同じコマンドなしで動作します(VAR=value mycommand例:set toとして実行)。 Shebang行が役に立つ理由は、照会を実行し、コマンド名で呼び出されたときに他の操作を実行しないためです。このコマンドは、シェルがインポートしない無効な名前の変数を含む環境を表示するために、いくつかの環境変数(引数を含むまたは除く)のみを含むコマンドを実行するために使用できます。mycommandVARvalueenv VAR=value mycommandenvPATHenv-i

おすすめ記事