Saya memiliki skrip bash yang berfungsi dengan jalur relatif. Itu perlu memiliki direktori kerja yang sama dengan direktori tempat skrip disimpan. Ini berfungsi dengan baik selama saya memulainya dari prompt, karena saya bisa cd ke direktori skrip terlebih dahulu. Namun, ketika saya membuat symlink ke skrip di /etc/cron.hourly, skrip tersebut rusak.
Saya memerlukan cara untuk membuat direktori perubahan skrip bash ke direktori tempat skrip disimpan. Namun, sejauh ini saya tidak berhasil. Apakah ada cara mudah untuk melakukan ini, bahkan jika skrip dipanggil dari cron melalui symlink?
Jawaban yang Diterima:
Anda harus bisa melakukan ini.
- Parameter $0 diperluas ke jalur lengkap (termasuk nama) skrip saat dipanggil.
- Fungsi shell bawaan test (atau [ ] ) dapat menguji apakah suatu jalur adalah symlink menggunakan -L
ls -l
, jika diterapkan ke symlink, akan memberikan satu baris keluaran dengan jalur yang benar sebagai bidang terakhir.
Itu cukup bagi Anda untuk menemukan lokasi sumbernya. Tentu saja, itu mungkin symlink, yang mengharuskan Anda melakukan ini secara rekursif…