Trong một kịch bản tôi nhận được trong $0đường dẫn tương đối có thể đến nó. Để chuyển đổi nó thành tuyệt đối tôi đã tìm thấy giải pháp này mà tôi không hiểu:
abspath=$(cd ${0%/*} && echo $PWD/${0##*/})
Vấn đề của tôi là sự kỳ diệu bên trong ${0%/*}và ${0##*/}. Có vẻ như cái trước trích xuất dirname và cái sau trích xuất tên tệp, tôi không hiểu làm thế nào.
dirnamesử dụng là hữu ích ở đây.
BASH_SOURCElà tốt hơn $0, vì $0cung cấp cho người dùng gõ lệnh, có thể không phải là tập lệnh hiện đang thực thi.
readlink -f $0để có được đường dẫn chính tắc.