. 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
答え2
run.shファイルとdefaults.shファイルと同じディレクトリで「dash run.sh」を実行している場合は、PATHに$ PWDを追加してみてください。
私のテストでは、次のような結果を確認しました。
# dash run.sh
run.sh: 3: .: defaults.sh: not found
その後、次の手順を実行しました。
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# export PATH=$PATH:$PWD
PATHに$ PWDを追加した後の結果:
# dash run.sh
VAR: abc