¿Por qué `at` me advierte que los comandos se ejecutarán usando / bin / sh? ¿Qué pasa si quiero un caparazón diferente?

12

Traté de usar atdesde un script mío y se imprime:

advertencia: los comandos se ejecutarán usando / bin / sh

¿Cómo usaría un shell diferente si quisiera?

Cratilo
fuente

Respuestas:

14

En Linux, atsiempre le advierte que ejecutará los comandos especificados con /bin/sh, en lugar de su shell favorito. No puede suprimir este mensaje, está codificado en el código fuente.

El comando que pasa es interpretado por /bin/sh. Este comando puede ser la ruta a un script si lo desea; luego /bin/shejecutará el programa de script, haciendo que se inicie el intérprete del script e interprete el script. El lenguaje del script es completamente independiente del programa que lo inicia. Entonces, si por ejemplo desea ejecutar un script bash (es decir, un script que comienza con #!/bin/bash), simplemente pase la ruta al script ate ignore el mensaje irrelevante.

Gilles 'SO- deja de ser malvado'
fuente
4

puede lograr ejecutarlo desde un shell diferente cambiando el shebang del script . Algunas líneas 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 ejecutar un script en momentos determinados, le sugiero que agregue un cronjob

Ejemplo:

La siguiente línea hace que el programa de usuario test.pl, aparentemente un script de Perl, se ejecute cada dos horas, a medianoche, 2 a.m., 4 a.m., 6 a.m., 8 a.m., etc.

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

vfbsilva
fuente
#!/usr/bin/perlya es el shebang en mi guión pero recibo la advertencia
Cratylus
@Cratylus echa un vistazo aquí para obtener una explicación.
vfbsilva
+1 shbang y mención de rubí y perl. Además, considere usar "#! / Bin / env ruby".
ChuckCottrill
el mío todavía se queja después de #!/bin/sh...?
gloomy.penguin