非ログイン非対話式bash開始問題

非ログイン非対話式bash開始問題

bashのスタートアップファイルを学んでいますが、次のリンクが見つかりました。

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対話型シェルで設定するだけでは十分ではなく、シェルスクリプト環境でも表示する必要があります。

おすすめ記事