90

私は物事を成し遂げるために、たまたまいくつかのコマンドを盲目的に実行します。

最近Jenkinsを使い始めたので、このexportコマンドを使用してJenkinsWARアーカイブを実行する必要がありました。コマンドは一般的に何exportをしますか?また、Jenkinsの実行中に(Jenkinsホームが設定された後)このコマンドを実行する必要があるのはなぜですか?

4

3 に答える 3

103

exportinおよび関連するシェル(Bashなど)は、子プロセスにエクスポートさshれる環境変数をマークして、子がそれらを継承するようにします。

exportPOSIXで定義されています:

シェルは、指定された名前に対応する変数にexport属性を与えます。これにより、それらは、後で実行されるコマンドの環境に置かれます。変数の名前の後に=wordが続く場合、その変数の値はwordに設定されます。

于 2012-12-10T05:03:35.140 に答える
31

あなたはWindowsのバックグラウンドから来ていると思います。それで、それらを対比します(私もLinuxに少し慣れていません)。私のコメントに対するユーザーの返信は、物事を理解するのに役立つことがわかりました。

Windowsでは、変数は永続的である場合とそうでない場合があります。環境変数という用語には、SETコマンドを使用してcmdシェルで設定された変数と、変数がWindows GUI内で設定され、レジストリで設定され、新しいcmdウィンドウで表示できるようになる変数が含まれます。

たとえば、 Windowsのsetコマンドのドキュメント「環境変数を表示、設定、または削除します。パラメータなしで使用すると、setは現在の環境設定を表示します。」

Linuxでは、setは環境変数を表示しません。環境変数として呼び出されない/参照されないシェル変数を表示します。また、Linuxは、変数を設定するためにsetを使用せず(最後に注記として説明する位置パラメーターとシェルオプションを除く)、それらを表示するためだけに、さらにはシェル変数を表示するためだけに使用します。Windowsは設定と表示にsetset a=5を使用しますが、Linuxは使用しません。

Linuxでは、起動時に変数を設定するスクリプトを作成できると思います。たとえば、、など/etc/profileです/etc/.bashrcが、それ以外の場合は永続的ではありません。それらはRAMに保存されます。

Linuxには、シェル変数と環境変数の違いがあります。Linuxでは、シェル変数は現在のシェルにのみ存在し、環境変数はそのシェルとすべての子シェルに存在します。

コマンドを使用してシェル変数を表示できますset(ただし、Windowsとは異なり、Linuxではsetコマンドを使用して変数を設定しないことに注意してください)。

set -o posix; setset -o posix最初にそれを行うと、不要なものをあまり表示しないようになります)。したがってset、シェル変数を表示します。

コマンドで環境変数を表示できますenv

シェル変数は、たとえば、だけで設定されますa = 5

環境変数はexportで設定されます。エクスポートはシェル変数も設定します。

ここでは、シェル変数zzzがで設定されておりzzz = 5、実行時にset表示されますが、環境変数としては表示されません。

ここではyyy、エクスポートが設定されているので、環境変数です。そして、シェル変数と環境変数の両方の下に表示されていることを確認してください。

$ zzz=5

$ set | grep zzz
zzz=5

$ env | grep zzz

$ export yyy=5

$ set | grep yyy
yyy=5

$ env | grep yyy
yyy=5

$

その他の便利なQnA:

注:少し詳しく説明し、私が書いたものをいくらか修正する1つのポイントは、Linux bashでは、「set」を使用して「位置パラメーター」と「シェルオプション/属性」、および技術的には両方を設定できることです。これらは変数ですが、manページではそのように説明されていない場合があります。

ただし、前述のように、setはシェル変数または環境変数を設定しません)。そうするとset asdf、$ 1がasdfに設定され、そうするとasdfecho $1表示されます。

これを行うset a=5と、変数aは5に設定されません。位置パラメーター$ 1は、「a=5」の文字列に等しく設定されます。したがって、Linuxでset a = 5を見たことがあれば、誰かが$1でその文字列a= 5を実際に望んでいない限り、おそらく間違いです。

Linuxのセットで設定できるもう1つのことは、シェルのオプション/属性です。-oを設定すると、それらのリストが表示されます。また、たとえばset -o verbose、offを実行して、冗長をオンにすることができます(ちなみに、デフォルトはオフになっていますが、これに違いはありません)。set +o verboseまたは、冗長をオフにするために行うことができます。Windowsには、setコマンドのそのような使用法はありません。

于 2015-07-16T19:19:34.393 に答える
6

簡単に言うと、環境変数は、新しいシェルセッションを開くときに設定されます。変数値のいずれかを変更した場合、シェルはいつでもその変更を選択する方法がありません。これは、行った変更が新しいシェルセッションで有効になることを意味します。

一方、このexportコマンドは、エクスポートされた変数に加えた変更について、現在のシェルセッションを更新する機能を提供します。変更した変数の値を使用するために、新しいシェルセッションまで待つ必要はありません。

于 2015-05-16T09:51:41.140 に答える