Tôi có một kịch bản doSmth
trong /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 doSmth
từ /home/me
đầu ra sẽ được /home/me
.
Tôi có một kịch bản doSmth
trong /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 doSmth
từ /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, pwd
sẽ 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 pushd
và popd
.
cd
hai lần)