Saya memiliki skrip shell di /usr/bin
. Sebut saja hello
.
Ini berisi ini:
echo "I am located in $PWD"
echo "I am called from this directory: ???"
Menjalankan hello
dari /home/Documents
Saya mengharapkan output berikut:
I am located in /usr/bin
I am called from this directory: /home/Documents
Bagaimana saya bisa mendapatkan jalur direktori tempat skrip dijalankan?
Jawaban yang Diterima:
Tidak dapat mengomentari jawaban lain, jadi saya memposting di sini. Seperti yang dikatakan, dirname
hanya membaca $0
dan mengambil nama direktori, jadi jika Anda memanggil sesuatu seperti ../../directory/something.sh
itu tidak menyelesaikan titik-titik itu tetapi hanya mengembalikan ../../directory
. Alih-alih menggunakan ekspansi subkulit dengan cd
dan pwd
, Anda dapat menggunakan perintah yang sangat cerdas readlink
yang sebenarnya tidak hanya menyelesaikan direktori bertitik tetapi juga semua tautan simbolik. Oleh karena itu saya menyarankan
echo "I am located at $(readlink -e -- "$0")"
Anda dapat menggunakan dirname
lain sekitar ini untuk mendapatkan direktori alih-alih file.