
ファイルのあるパスにあるファイルにアクセスするには、スクリプトを実行する必要があります。
例:/home/me/folder/script.sh
ファイルにアクセスするスクリプトがあります/home/me/folder/myfile
。ファイルはスクリプトと同じパスにあるため、フルパスではmyfile
なく名前のみを使用しました。
しかし、次のように実行すると/tmp/
:
/tmp$ /home/me/folder/script.sh
それは私に以下を与えます:
myfile: No such file or directory
もしそうなら、スクリプトはファイルがスクリプト自体と同じパスにあるとどうすればいいですか?
答え1
すべてのケースはわかりませんが、通常(常にそうではない)シェルが検索するのではなく、パスでスクリプトを実行すると、スクリプトパスはに$PATH
あります$0
。その後、またはdirname "$0"
を使用して${0%/*}
パスを取得できます。
答え2
どうですか$(dirname "$0")/myfile
?
答え3
私は通常スクリプトの冒頭で次のことを行います。
SCRIPTDIR=$(dirname "$0")
または(相対パス名の代わりに)スクリプトディレクトリのフルパス名を取得するには、次の手順を実行します。
SCRIPTDIR=$(cd $(dirname "$0") && pwd)
その後、${SCRIPTDIR}
必要な場所に引用してください。