コマンドが/ bin / shを使用して実行されることを `at`が警告するのはなぜですか?別のシェルが必要な場合はどうなりますか?


12

私のatスクリプト内から使用しようとすると、次のように表示されます。

警告:コマンドは/ bin / shを使用して実行されます

必要に応じて別のシェルをどのように使用しますか?

回答:


14

Linuxでは、お気に入りのシェルではなく、でat指定されたコマンドを実行することを常に警告します/bin/sh。このメッセージは抑制できません。ソースコードにハードコーディングされています。

渡したコマンドはによって解釈され/bin/shます。このコマンドは、必要に応じてスクリプトへのパスにすることができます。次に/bin/sh、スクリプトプログラムを実行して、スクリプトのインタープリターを起動し、スクリプトを解釈させます。スクリプトの言語は、スクリプトを起動するプログラムから完全に独立しています。たとえば、bashスクリプト(つまり、で始まるスクリプト#!/bin/bash)を実行する場合は、スクリプトへのパスを渡してat、無関係なメッセージを無視します。


4

スクリプト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

所定の時間にスクリプトを実行するには、cronジョブを追加することをお勧めします

例:

次の行は、ユーザープログラムtest.pl(表面上はPerlスクリプト)を2時間ごと、午前0時、午前4時、午前6時、午前8時などに実行します。

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


#!/usr/bin/perlは既に私のスクリプトのシバンですが、警告が表示されます
Cratylus

@Cratylus は説明をここで見てください
vfbsilva 2013

+1 shbangとルビーとパールの言及。また、「#!/ bin / env ruby​​」の使用を検討してください。
ChuckCottrill 2013年

私はまだ#!/bin/sh....?
gloomy.penguin 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.