Tôi có một tiện ích bao gồm một vài thư mục với một số tập lệnh bash và các tệp hỗ trợ sẽ được triển khai cho một số máy có thể trong một thư mục khác nhau trên mỗi máy. Các tập lệnh cần có khả năng tham chiếu các đường dẫn liên quan đến chính chúng vì vậy tôi cần có thể có được đường dẫn đến tệp hiện đang được thực thi.
Tôi nhận thức được dirname $0
thành ngữ hoạt động hoàn hảo khi tập lệnh của tôi được gọi trực tiếp. Thật không may, có một mong muốn có thể tạo ra các liên kết tượng trưng cho các tập lệnh này từ một thư mục hoàn toàn khác và vẫn có công việc logic đường dẫn tương đối.
Một ví dụ về cấu trúc khô tổng thể như sau:
/
|-usr/local/lib
| |-foo
| | |-bin
| | | |-script.sh
| | |-res
| | | |-resource_file.txt
|-home/mike/bin
| |-link_to_script (symlink to /usr/local/lib/foo/bin/script.sh)
Làm thế nào tôi có thể tham khảo đáng tin cậy /usr/local/lib/foo/res/resource_file.txt
từ script.sh
việc nó được gọi bởi /usr/local/lib/foo/bin/script.sh
hay ~mike/bin/link_to_script
?