Por que `at` me avisa que os comandos serão executados usando / bin / sh? E se eu quiser um shell diferente?

12

Eu tentei usar atde dentro de um script meu e ele imprime:

aviso: os comandos serão executados usando / bin / sh

Como eu usaria shell diferente se quisesse?

Cratylus
fonte

Respostas:

14

No Linux, atsempre avisa que ele executará os comandos especificados com /bin/sh, em vez do seu shell favorito. Você não pode suprimir esta mensagem, ela está codificada no código fonte.

O comando que você passa é interpretado por /bin/sh. Este comando pode ser o caminho para um script, se você preferir; em seguida /bin/sh, executará o programa de script, fazendo com que o intérprete do script seja iniciado e interprete o script. O idioma do script é completamente independente do programa que o inicia. Portanto, se, por exemplo, você deseja executar um script bash (ou seja, um script que começa com #!/bin/bash), basta passar o caminho para o script ate ignorar a mensagem irrelevante.

Gilles 'SO- parar de ser mau'
fonte
4

você pode executá-lo de um shell diferente alterando o script shebang . Algumas linhas típicas de 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

Para executar um script em determinados horários, sugiro que você adicione um cronjob

Exemplo:

A linha a seguir torna o programa do usuário test.pl - aparentemente um script Perl - executado a cada duas horas, à meia-noite, 2h, 4h, 6h, 8h, e assim por diante:

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

vfbsilva
fonte
#!/usr/bin/perljá é o shebang no meu script, mas eu recebo o aviso
Cratylus
@Cratylus, dê uma olhada aqui para obter explicações.
precisa saber é o seguinte
+1 shbang e menção de ruby ​​e perl. Além disso, considere usar "#! / Bin / env ruby".
ChuckCottrill
o meu ainda reclama depois #!/bin/sh....?
gloomy.penguin