Cách tìm thư mục nơi tập lệnh Bash được đặt từ bên trong tập lệnh

Cach Tim Thu Muc Noi Tap Lenh Bash Duoc Dat Tu Ben Trong Tap Lenh



Khi làm việc với các tập lệnh bash, thật hữu ích khi biết vị trí tập lệnh. Điều này có thể đặc biệt hữu ích khi làm việc với các đường dẫn tệp tương đối hoặc khi cố gắng thực thi các tập lệnh hoặc lệnh khác từ bên trong tập lệnh. Trong bài viết này, chúng ta sẽ xem xét một số cách khác nhau để xác định thư mục của tập lệnh bash từ bên trong chính tập lệnh đó.

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 dirname

Chỉ 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 đọc

Hiện nay, tạo một kịch bản :

$ sudo nano myScript.sh

Và gõ:

#!/bin/bash

tiế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.