bashのスタートアップファイルを学んでいますが、次のリンクが見つかりました。
その後、リンクグラフの最後の四半期で、bashがログインではなく非対話型の場合は、環境変数BASH_ENVにenv変数を取得する必要があることがわかりました。テストファイルを作成し、BASH_ENV="/home/myusername を書きました。 /.bear.sh"
.bare.shの内容は次のとおりです。
var="the bare environment branch should be reached"
varを印刷するスクリプトを起動しました。
echo $var
ただし、スクリプトを起動した後、出力は記録されません。
私はそれが「ベア環境ポイントに到達しなければならない」と印刷すると予想しました。
ここで何が間違っている可能性がありますか?
ベストアンサー1
非対話型、非ログインbash
シェルが次を探す場合BASH_ENV
その環境で、ファイルをインポートします。エクスポートしないと、BASH_ENV
シェル環境では見つかりません。
export BASH_ENV
これは、コールシェルに存在するか、次を使用する必要があることを意味します。
BASH_ENV=$BASH_ENV ./myscript.sh
スクリプトを起動するとき。
マニュアルの関連詩bash
:
たとえば、bashが非対話式で起動されたときにシェルスクリプトを実行するには、
BASH_ENV
環境内で変数を探し、その値が環境にある場合は展開し、拡張値をファイルとして読み込み実行します。 。 Bashは、次のコマンドが実行されたかのように動作します。if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
ただし、変数値は
PATH
ファイル名の取得には使用されません。
つまり、簡単に言えば、BASH_ENV
対話型シェルで設定するだけでは十分ではなく、シェルスクリプト環境でも表示する必要があります。