Tôi có một kịch bản doSmthtrong /usr/bin. Có thể lấy và in thư mục mà script được gọi từ đâu không?
Vì vậy, nếu tôi gọi doSmthtừ /home/međầu ra sẽ được /home/me.
Tôi có một kịch bản doSmthtrong /usr/bin. Có thể lấy và in thư mục mà script được gọi từ đâu không?
Vì vậy, nếu tôi gọi doSmthtừ /home/međầu ra sẽ được /home/me.
Câu trả lời:
Bởi "thư mục nó được gọi từ" bạn dường như có nghĩa là thư mục làm việc của nó. Bạn có thể thay đổi điều này bên trong tập lệnh bằng cách sử dụng, ví dụ cd, nhưng trước khi bạn làm như vậy, pwdsẽ in nó ra. Nó cũng có khả năng là trong biến$PWD
Nếu bạn cần thư mục làm việc ban đầu sau khi thay đổi, chỉ cần lưu nó ở đầu tập lệnh của bạn (trước khi thay đổi)
#!/bin/bash
initial_wd=`pwd`
# ... do a lot of stuff ...
# ⋮
cd "$initial_wd"
Nếu bạn đang sử dụng điều này để quay lại thư mục bạn đã bắt đầu, hãy xem thêm pushdvà popd.
cdhai lần)