Pourquoi `at` m'avertit-il que les commandes seront exécutées en utilisant / bin / sh? Et si je veux un autre shell?


12

J'ai essayé d'utiliser à atpartir d'un de mes scripts et il affiche:

avertissement: les commandes seront exécutées à l'aide de / bin / sh

Comment pourrais-je utiliser un shell différent si je le voulais?

Réponses:


14

Sous Linux, atvous avertit toujours qu'il exécutera les commandes spécifiées avec /bin/sh, plutôt que votre shell préféré. Vous ne pouvez pas supprimer ce message, il est codé en dur dans le code source.

La commande que vous passez est interprétée par /bin/sh. Cette commande peut être le chemin vers un script si vous le souhaitez; puis /bin/shexécutera le programme de script, provoquant le lancement de l'interpréteur de script et l'interprétation du script. La langue du script est complètement indépendante du programme qui le démarre. Donc, par exemple, si vous souhaitez exécuter un script bash (c'est-à-dire un script qui commence par #!/bin/bash), passez simplement le chemin d'accès au script atet ignorez le message non pertinent.


4

vous pouvez l'exécuter à partir d'un autre shell en changeant le script shebang . Quelques lignes de shebang typiques:

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

Pour exécuter un script à des moments donnés, je vous suggère d'ajouter un cronjob

Exemple:

La ligne suivante permet d'exécuter le programme utilisateur test.pl - ostensiblement un script Perl - toutes les deux heures, à minuit, 2 h, 4 h, 6 h, 8 h, etc.:

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


#!/usr/bin/perlest déjà le shebang dans mon script mais je reçois l'avertissement
Cratylus

@Cratylus jetez un oeil ici pour des explications.
vfbsilva

+1 shbang et mention de rubis et perl. Pensez également à utiliser "#! / Bin / env ruby".
ChuckCottrill

le mien se plaint toujours après #!/bin/sh...?
gloomy.penguin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.