Saya perlu menjalankan skrip yang mengakses file di jalur yang sama dengan lokasinya.
Sebagai contoh: Saya memiliki skrip /home/me/folder/script.sh
, dan skrip ini akan mengakses file /home/me/folder/myfile
. Karena file berada di jalur yang sama dengan skrip, saya hanya menggunakan nama myfile
, bukan path lengkap.
Tetapi jika saya menjalankannya /tmp/
, seperti:
/tmp$ /home/me/folder/script.sh
itu memberi saya:
myfile: No such file or directory
Jadi, bagaimana saya bisa mengatakan dalam skrip bahwa file berada di jalur yang sama dengan skrip itu sendiri?
shell
scripting
shell-script
path
Tom Brito
sumber
sumber
Jawaban:
Bagaimana dengan
$(dirname "$0")/myfile
?sumber
Anda tidak dapat mengetahui dalam semua keadaan, tetapi seringkali (tidak selalu) ketika Anda menjalankan skrip demi path alih-alih membiarkan pencarian shell
$PATH
, path ke skrip akan berada$0
. Anda kemudian dapat menggunakandirname "$0"
atau${0%/*}
untuk mendapatkan jalur.sumber
Saya biasanya melakukan sesuatu seperti ini di bagian atas skrip saya:
Atau, untuk mendapatkan pathname lengkap ke direktori skrip (bukan pathname relatif):
Kemudian hanya referensi di
${SCRIPTDIR}
mana diperlukan.sumber