私は.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"
。echo
echo はシェルの一部なので、I を使用してその値をエコーします。 echo.sh
次に、同じ基本機能を持つ小さなスクリプトを作成します。ちょうどechoですが、違い${MYVAR}
は別のスクリプトなので、別のプロセスで実行されることです。- 新しいプロセスが継承されないため、呼び出し時に
echo.sh
何も出力されません。${MYVAR}
- その後、キーワードを使用して
${MYVAR}
自分の環境にエクスポートします。export
- 今すぐ同じタスクを再実行すると、環境からインポートされたコンテンツなので、コンテンツは
echo.sh
エコーされます。${MYVAR}
したがって、あなたの質問に答えるには:
変数をエクスポートする必要があるかどうかは、変数が使用される場所によって異なります。