2016-06-17 6 views
1

bashスクリプトは、次の2行で私のLinuxマシンにあります:等号なしのエクスポート変数は何をしますか?

[ -r /etc/java/java.conf ] && . /etc/java/java.conf 
export JAVA_HOME 

輸出JAVA_HOMEは何をしますか?私は通常、エクスポートVARIABLE_NAME =何かが何かに変数を設定すると思った。

JAVA_HOMEを何かに設定せずに実行すると、何が実行されますか?

コマンドラインで実行しようとしましたが、何も起こりません。 /etc/java/java.confが存在し、読み取り権限を付与されている場合が

-rチェック:

+0

あなたは[ドキュメント](https://www.gnu.org/software/bash/manual/html_node/Bourne-Shellを読んでみました-Builtins.html#Bourne-Shell-Builtins)? – melpomene

+0

あなたがリンクしたドキュメントは公正であるために、OPが尋ねたものには実際には言及していません - @melpomene –

+1

@JonnyHenly "*環境内の子プロセスに渡す各名前をマークしてください*" - これがエクスポートの動作です。 – melpomene

答えて

3

2行のコード(より良い二重括弧を使用する):

[[ -r /etc/java/java.conf ]] && . /etc/java/java.conf 
export JAVA_HOME 

が...これに相当します。

&&上記の条件が真であれば、ファイルをソースします。

export JAVA_HOMEは、以前に割り当てられた値$JAVA_HOMEをソースファイルから取り出し、シェル内ではなくサブプロセスで使用できるようにします。

+1

'export'コマンドで、読み込みファイルから取り出しません。これは、ソースであったときに、シェル変数を割り当てられていました。これはシェル変数をエクスポートし、環境変数にもな​​ります。これらは非常に異なる操作です。それらを融合させた説明は理解を助けるものではない。 –

+0

@CharlesDuffy:ありがとう! –

+1

NP - 編集したとおり、これは非常に明確で有用な答えだと思います! –

関連する問題