Hoặc những gì tôi đang hỏi ở đây là cực kỳ không chính thống / không thông thường / rủi ro, hoặc các kỹ năng Google-fu của tôi không phải là để ...
Trong một bash
tập lệnh shell, có cách nào dễ dàng để biết liệu nó có được lấy từ một tập lệnh shell khác không, hay nó đang được điều hành bởi chính nó? Nói cách khác, có thể phân biệt giữa hai hành vi sau đây không?
# from another shell script
source myScript.sh
# from command prompt, or another shell script
./myScript.sh
Những gì tôi nghĩ làm là tạo ra một kịch bản shell giống như tiện ích có chứa các bash
hàm có thể được cung cấp khi có nguồn gốc. Khi tập lệnh này tự chạy, tôi sẽ thích nó thực hiện một số thao tác nhất định, dựa trên các chức năng được xác định. Có một loại biến môi trường nào mà tập lệnh shell này có thể nhận được, vd
some_function() {
# ...
}
if [ -z "$IS_SOURCED" ]; then
some_function;
fi
Tốt hơn là, tôi đang tìm một giải pháp không yêu cầu tập lệnh người gọi để đặt bất kỳ biến cờ nào.
chỉnh sửa : Tôi biết sự khác biệt giữa tìm nguồn cung ứng và chạy tập lệnh, những gì tôi đang cố gắng tìm hiểu ở đây nếu có thể cho biết sự khác biệt trong tập lệnh đang được sử dụng (theo cả hai cách).
.
lệnh nào cả, nhưng về việc phát hiện xem một tập lệnh đã có nguồn gốc hay chạy bình thường (tức là trong một khung con).