Lihat: entri FAQ BASH # 28: "Bagaimana cara menentukan lokasi skrip saya? Saya ingin membaca beberapa file konfigurasi dari tempat yang sama."
Solusi apa pun tidak akan berhasil 100% setiap saat:
Penting untuk disadari bahwa dalam kasus umum, masalah ini tidak ada solusinya. Pendekatan apa pun yang mungkin pernah Anda dengar, dan pendekatan apa pun yang akan dirinci di bawah ini, memiliki kekurangan dan hanya akan berfungsi dalam kasus tertentu. Pertama dan terpenting, cobalah untuk menghindari masalah sepenuhnya dengan tidak bergantung pada lokasi skrip Anda!
Jika Anda perlu menulis alat yang sangat dapat digunakan kembali, maka mengambil jalur yang benar sebagai parameter ke skrip Anda akan menjadi metode yang paling dapat diandalkan .
Dengan asumsi skrip Anda hanya akan dijalankan dari cangkang tertentu, dan hanya dengan sedikit fleksibilitas yang diperlukan, Anda mungkin dapat melonggarkan beberapa paranoia ini. Masih bagus untuk melihat pilihan Anda. Ada pola umum yang digunakan orang yang sangat bermasalah.
Secara khusus, FAQ merekomendasikan untuk menghindari $0variabel yang sangat umum digunakan :
Tidak ada yang membaca $0akan menjadi antipeluru, karena $0itu sendiri tidak dapat diandalkan.
Sebagai alternatif, Anda bisa menggunakan $BASH_SOURCE. Sesuatu seperti ini:
source "${BASH_SOURCE%/*}/act.conf.sh"
Ada beberapa peringatan untuk solusi ini juga. Lihat halaman FAQ untuk melihat trade-off antara solusi yang berbeda. Mereka tampaknya merekomendasikan cddalam kombinasi dengan $BASH_SOURCEkasus di mana itu akan bekerja untuk Anda, karena Anda mendapatkan kondisi kesalahan yang berguna ketika gagal berkembang dengan benar.
readlink. Tidak dapat menentukan kata kunci yang akan dicari jadi kirimkan pertanyaannya di sini ....