ทำไม `at 'เตือนฉันว่าคำสั่งจะถูกดำเนินการโดยใช้ / bin / sh? ถ้าฉันต้องการเปลือกที่แตกต่างกัน


12

ฉันพยายามที่จะใช้atจากภายในสคริปต์ของฉันและมันพิมพ์:

คำเตือน: คำสั่งจะถูกดำเนินการโดยใช้ / bin / sh

ฉันจะใช้เปลือกที่แตกต่างกันได้อย่างไรถ้าฉันต้องการ?

คำตอบ:


14

ภายใต้ Linux atเตือนคุณเสมอว่าจะดำเนินการคำสั่งที่ระบุด้วย/bin/shแทนที่จะเป็นเชลล์ที่คุณโปรดปราน คุณไม่สามารถระงับข้อความนี้มันเป็นรหัสยากในรหัสที่มา

/bin/shคำสั่งที่คุณผ่านการตีความ คำสั่งนี้สามารถเป็นพา ธ ไปยังสคริปต์ได้หากคุณต้องการ จากนั้น/bin/shจะดำเนินการโปรแกรมสคริปต์ทำให้ตัวแปลสคริปต์เปิดใช้งานและตีความสคริปต์ ภาษาของสคริปต์นั้นไม่ขึ้นอยู่กับโปรแกรมที่เริ่มทำงาน ดังนั้นถ้าเช่นคุณต้องการรันสคริปต์ทุบตี (เช่นสคริปต์ที่ขึ้นต้นด้วย#!/bin/bash) เพียงแค่ผ่านเส้นทางไปยังสคริปต์ไปยังatและละเว้นข้อความที่ไม่เกี่ยวข้อง


4

คุณสามารถบรรลุการทำงานได้จากเปลือกแตกต่างกันเปลี่ยนสคริปต์shebang บางเส้น Shebang ทั่วไป:

#!/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

หากต้องการเรียกใช้สคริปต์ตามเวลาที่กำหนดฉันขอแนะนำให้คุณเพิ่มcronjob

ตัวอย่าง:

บรรทัดต่อไปนี้ทำให้โปรแกรมผู้ใช้ test.pl ซึ่งเป็นสคริปต์ Perl ทำงานทุกสองชั่วโมงในเวลาเที่ยงคืน, 2am, 4am, 6am, 8am และอื่น ๆ :

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


#!/usr/bin/perlเป็น Shebang ในสคริปต์ของฉันอยู่แล้ว แต่ฉันได้รับคำเตือน
Cratylus

@Cratylus ดูที่นี่สำหรับคำอธิบาย
vfbsilva

+1 shbang และพูดถึง ruby ​​และ perl ลองพิจารณาใช้ "#! / bin / env ruby"
ChuckCottrill

ฉันยังคงบ่นหลังจาก#!/bin/sh....
gloomy.penguin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.