Cách tìm thư mục nơi tập lệnh Bash được đặt từ bên trong tập lệnh
Trong khi viết tập lệnh bash, bạn có thể yêu cầu vị trí của tập lệnh để tự động hóa các tác vụ khác nhau. Có hai loại đường dẫn trong Linux:
- Đường dẫn người thân: Tương đối là thư mục làm việc hiện tại.
- Đường dẫn tuyệt đối: Đây là đường dẫn đầy đủ của thư mục và tệp.
Một trong những cách phổ biến nhất để xác định vị trí của tập lệnh bash là sử dụng pwd yêu cầu. Các pwd yêu cầu ( in thư mục làm việc) sẽ hiển thị thư mục hiện tại.
Vì vậy, trong nhiều tình huống chỉ cần sử dụng pwd lệnh không hoạt động vì nó chỉ cung cấp đường dẫn của thư mục hiện đang hoạt động.
Ví dụ: nếu tập lệnh nằm trong Tải xuống thư mục và được thực thi từ máy tính để bàn sau đó đầu ra sẽ chứa /home/usr/Máy tính để bàn không phải vị trí của tệp tập lệnh bash mà là /home/usr/Tải xuống .
Hướng dẫn này nói về việc lấy đường dẫn của thư mục chứa tệp tập lệnh bash từ bên trong tập lệnh.
Cách lấy đường dẫn thư mục nơi đặt tệp Bash Script
Một cách khác để xác định thư mục của tập lệnh Bash là sử dụng dirname yêu cầu. Các dirname lệnh lấy đường dẫn tệp làm đối số và trả về phần thư mục của đường dẫn.
để sử dụng dirname để xác định thư mục của tập lệnh, bạn sẽ gọi lệnh có đường dẫn đến các thành phần không gạch chéo cuối cùng của tập lệnh làm đối số.
Để biết thêm chi tiết về dirname thực hiện các lệnh sau trong thiết bị đầu cuối:
$ người đàn ông dirnameChỉ một dirname sẽ không hoạt động, chúng ta cần một lệnh khác đó là liên kết đọc . Các liên kết đọc lệnh in đã giải quyết liên kết tượng trưng. Nhận thêm thông tin về lệnh này bằng cách chạy:
$ người đàn ông liên kết đọcHiện nay, tạo một kịch bản :
$ sudo nano myScript.shVà gõ:
#!/bin/bashtiếng vang 'Đường dẫn tập lệnh bash là $(dirname -- '$(readlink -f - '$0') ' ; ) “;
Để chạy tập lệnh, hãy sử dụng:
$ đánh đập myScript.sh
Hãy thay đổi thư mục và xem đầu ra là gì:
Ghi chú: Trong một trường hợp, tập lệnh trên sẽ không hoạt động nếu tệp được lấy nguồn thay vì thực thi như có thể thấy trong đầu ra sau:
đầu ra là /home/sam/Máy tính để bàn trong khi tệp script có trong /nhà/sam danh mục.
Phần kết luận
Tóm lại, có nhiều cách để xác định thư mục của tập lệnh bash từ bên trong chính tập lệnh đó. Các dirname cùng với liên kết đọc tiện ích có thể được sử dụng để xác định thư mục của tập lệnh. Tuy nhiên, chỉ cần sử dụng pwd lệnh không hoạt động vì nó chỉ cung cấp thư mục hiện đang hoạt động.