Tôi đang viết một tập lệnh để sao chép một số tệp xung quanh và cố gắng sử dụng shopt -s dotglob để cho phép cp sao chép các tệp dotfiles như .jshintvà không có gì.
Tôi có thể chạy shopt -s dotglobtrực tiếp tại một dấu nhắc bash mà không có lỗi. Tuy nhiên, chạy tập lệnh sẽ ném lỗi:
script.sh: 81: script.sh: shopt: not found
Tôi đang chạy tập lệnh này trong bash shell, với tiêu đề shebang #!/usr/bin/env bash. Dòng lỗi:
shopt -s dotglob
cp -r $TEMP/img/* $TARGET/img/
cp -r $TEMP/js/* $TARGET/js/
cp -r $TEMP/less/* $TARGET/less/
Không tìm thấy bất cứ điều gì hữu ích trên google, bất kỳ ý tưởng vấn đề là gì ở đây?
#!/bin/bashtiêu đề đơn giản hơn ?
shoptlà một bash dựng sẵn, shkhông có shoptvà thông báo lỗi trông giống như một thông báo lỗi từ dash. Vì vậy, rất có thể lỗi ở đây là chạy tập lệnh bash với sh( dashtheo mặc định trong Ubuntu ). Ngay cả khi shlà một liên kết tượng trưng đến bash, việc chạy một tập lệnh bash shkhông giống như chạy nó với bash.