ダッシュに.があるファイルに「見つかりません」エラーが発生します。

ダッシュに.があるファイルに「見つかりません」エラーが発生します。

. fileマニュアルページで指定された方法を使用してダッシュにファイルをインポートしようとしています。

 . file
        The commands in the specified file are read and executed by the
        shell.

ただし、ファイルを使用してもエラーが発生します。お持ちですか?:

$ ls
defaults.sh  run.sh
$ cat run.sh 
#!/bin/sh

. defaults.sh

echo "VAR: $VAR"
$ cat defaults.sh 
VAR=abc
$ bash run.sh 
VAR: abc
$ dash run.sh 
run.sh: 3: .: defaults.sh: not found

. defaults.sh対話型ダッシュを使用しても同じことが起こります。

ここで私はどこで間違っていますか?

ベストアンサー1

./一部のシェルでは、前に追加のパスまたは絶対パスが必要です。

. ./defaults.sh

追加したいかもしれません。run.shスクリプトの絶対パス、そうでない場合は、defaults.shユーザーの場所から取得されます。

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
. "$SCRIPT_DIR"/defaults.sh

おすすめ記事