Tôi có một chương trình nhỏ chứa cấu trúc thư mục sau:
- main.sh
- lib/
- clean.sh
- get.sh
- index.sh
- test.sh
Mỗi tệp chứa một chức năng duy nhất mà tôi sử dụng main.sh.
main.sh:
source lib/*
get_products
clean_products
make_index
test_index
Trong hai chức năng đầu tiên ở trên, nhưng hai chức năng thứ hai thì không.
Tuy nhiên, nếu tôi thay thế source lib/*bằng:
source lib/get.sh
source lib/clean.sh
source lib/index.sh
source lib/test.sh
Mọi thứ hoạt động như mong đợi.
Bất cứ ai cũng biết tại sao source lib/*không làm việc như mong đợi?
/etc/bashrccách nó sử dụng mộtforvòng lặp để đối phó/etc/profile.d/*.sh. Nếu bạn tin tưởng nội dung củalib/nó có thể được giảm xuống thành một lớp lót:for i in lib/*.sh; do . "$i"; done