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.
dirname
sử dụng là hữu ích ở đây.
BASH_SOURCE
là tốt hơn $0
, vì $0
cung 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.