Tại sao `at` cảnh báo tôi rằng các lệnh sẽ được thực thi bằng / bin / sh? Nếu tôi muốn một cái vỏ khác thì sao?


12

Tôi đã cố gắng sử dụng attừ trong một tập lệnh của tôi và nó được in:

cảnh báo: các lệnh sẽ được thực thi bằng / bin / sh

Làm thế nào tôi có thể sử dụng vỏ khác nhau nếu tôi muốn?

Câu trả lời:


14

Trong Linux, atluôn cảnh báo bạn rằng nó sẽ thực thi các lệnh được chỉ định /bin/sh, thay vì shell yêu thích của bạn. Bạn không thể chặn thông báo này, nó được mã hóa cứng trong mã nguồn.

Lệnh bạn vượt qua được giải thích bởi /bin/sh. Lệnh này có thể là đường dẫn đến một kịch bản nếu bạn muốn; sau đó /bin/shsẽ thực thi chương trình tập lệnh, khiến trình thông dịch của tập lệnh được khởi chạy và diễn giải tập lệnh. Ngôn ngữ của tập lệnh hoàn toàn độc lập với chương trình khởi động nó. Vì vậy, nếu ví dụ bạn muốn thực thi tập lệnh bash (tức là tập lệnh bắt đầu bằng #!/bin/bash), chỉ cần chuyển đường dẫn đến tập lệnh đến atvà bỏ qua thông báo không liên quan.


4

bạn có thể đạt được việc chạy nó từ một trình bao khác thay đổi tập lệnh shebang . Một số dòng shebang điển hình:

#!/bin/sh — Execute the file using sh, the Bourne shell, or a compatible shell
#!/bin/csh -f — Execute the file using csh, the C shell,
#!/usr/bin/perl -T — Execute using Perl with the option for taint checks
#!/usr/bin/php — Execute the file using the PHP command line interpreter
#!/usr/bin/python -O — Execute using Python with optimizations to code
#!/usr/bin/ruby — Execute using Ruby

Để chạy tập lệnh vào những thời điểm nhất định, tôi khuyên bạn nên thêm một cronjob

Thí dụ:

Dòng sau đây làm cho chương trình người dùng test.pl có vẻ như là một tập lệnh Perl, cứ sau hai giờ, vào lúc nửa đêm, 2 giờ sáng, 4 giờ sáng, 6 giờ sáng, 8 giờ sáng, v.v.

0 * / 2 * * * /home/username/test.pl


#!/usr/bin/perlđã là shebang trong kịch bản của tôi nhưng tôi nhận được cảnh báo
Cratylus

@Cratylus hãy xem đây để giải thích.
vfbsilva

+1 shbang và đề cập đến ruby ​​và perl. Ngoài ra, hãy cân nhắc sử dụng "#! / Bin / env ruby".
ChuckCottrill

Của tôi vẫn phàn nàn sau #!/bin/sh....?
ảm đạm.penguin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.