为什么`at`会警告我将使用/ bin / sh执行命令?如果我想要其他外壳该怎么办?


12

我试图在我at的脚本中使用它并打印:

警告:将使用/ bin / sh执行命令

如果需要,我将如何使用其他外壳?

Answers:


14

在Linux下,at始终警告您它将使用/bin/sh而不是您喜欢的shell 执行指定的命令。您不能禁止显示此消息,它是在源代码中进行硬编码的。

您传递的命令由解释/bin/sh。如果愿意,此命令可以是脚本的路径。然后/bin/sh将执行脚本程序,从而启动脚本的解释器并解释该脚本。脚本的语言完全独立于启动它的程序。因此,例如,如果您要执行bash脚本(即以开头的脚本#!/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脚本)在午夜,凌晨2点,凌晨4点,凌晨6点,凌晨8点等每两个小时运行一次:

0 * / 2 * * * / home /用户名/test.pl


#!/usr/bin/perl已经是我脚本中的shebang了,但我得到了警告
Cratylus

@Cratylus在这里看看解释。
vfbsilva

+1 shbang并提及ruby和perl。另外,请考虑使用“#!/ bin / env ruby​​”。
ChuckCottrill

我的#!/bin/sh..... 之后仍然抱怨
gloomy.penguin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.