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.