.bashrcでエクスポートを使用する

.bashrcでエクスポートを使用する

私は.bashrcその前にいくつかの行があることがわかりました。export

export HISTTIMEFORMAT="%b-%d  %H:%M  "
...
export MYSQL_HISTFILE="/root/.mysql_history"

他の人はそうではありません。

HISTSIZE=100000

exportまず、これが正しいか、2番目にで使用される規則は何であるかを知りたいです.bashrc

ベストアンサー1

exportシェルで始まる他のプログラムで「表示」する必要がある変数だけが必要です。シェル自体内でのみ使用される変数は編集する必要はありませんexport

マニュアルページには次のように記載されています。

指定された名前は、後で実行されるコマンド環境に自動エクスポートするために表示されます。このオプションが与えられると、-f名前は関数を表します。名前が指定されていない場合、または-p このオプションが指定されている場合は、このシェルからエクスポートされたすべての名前のリストが印刷されます。この-nオプションを使用すると、エクスポートされた属性は各名前から削除されます。変数名の後に単語が続く場合、 =word変数の値は単語に設定されます。無効なオプションが見つかった場合、または名前の1つが有効なシェル変数名でない-f場合、または指定された名前が関数ではない場合、エクスポートは終了ステータス0を返します。

これは次のように証明できます。

$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh

$ export MYVAR="value-exported"
$ ./echo.sh
value-exported

説明する:

  • まず${MYVAR}これをシェル変数に設定しましたMYVAR="value"echoecho はシェルの一部なので、I を使用してその値をエコーし​​ます。
  • echo.sh次に、同じ基本機能を持つ小さなスクリプトを作成します。ちょうどechoですが、違い${MYVAR}は別のスクリプトなので、別のプロセスで実行されることです。
  • 新しいプロセスが継承されないため、呼び出し時にecho.sh何も出力されません。${MYVAR}
  • その後、キーワードを使用して${MYVAR}自分の環境にエクスポートします。export
  • 今すぐ同じタスクを再実行すると、環境からインポートされたコンテンツなので、コンテンツはecho.shエコーされます。${MYVAR}

したがって、あなたの質問に答えるには:

変数をエクスポートする必要があるかどうかは、変数が使用される場所によって異なります。

おすすめ記事