3

別のスクリプトで宣言された変数を使用するスクリプトを作成しようとしています。これまでexport、環境変数を定義するために使用するか、ローカルのものを使用してみました。

だから私は私の設定スクリプトを持っています:

export DIR_STORAGE="/var/storage/"

そして、同じディレクトリでそれを使用しようとするスクリプト:

source conf.sh
echo "DIR="${DIR_STORAGE}

しかし、それはうまくいかないようです。どうすればこれを修正できますか?

4

1 に答える 1

2

両方のファイルが同じディレクトリにある場合でも、現在のディレクトリsource conf.shで conf.sh を探します。例えば:

SHELL$ pwd
/home/user

SHELL$ ls mydir/
script.sh conf.sh

SHELL$ mydir/script.sh
script.sh: line 1: conf.sh: No such file or directory

この場合、スクリプトは mydir の下ではなく、現在の (ホーム) ディレクトリで「conf.sh」を検索します。

これを回避し、常にスクリプトと同じディレクトリで構成ファイルを探すには、次の方法を使用するのが一般的です。

source "$(dirname $0)/conf.sh"

これにより、スクリプトの呼び出しに使用したコマンドからパスが抽出され、構成ファイル名が追加されます。上記の例では、これはsource "mydir/conf.sh"正常に機能するはずです。

PSを使用する場合、変数sourceは必要ありません。export

于 2012-07-27T16:58:03.273 に答える