Ca ne sais même pas utiliser le shellbang
skarsnik@gobbla:~/Data/devel/toyunda-tools$ head -n 1 toyunda.pl
#!/usr/bin/perl
skarsnik@gobbla:~/Data/devel/toyunda-tools$ head -n 1 toyunda.rb
#!/usr/bin/env ruby
skarsnik@gobbla:~/Data/devel/toyunda-tools$ perl toyunda.pl
usage :
toyunda.pl [options] file.ini
[SNIP]
skarsnik@gobbla:~/Data/devel/toyunda-tools$ ruby toyunda.pl
usage :
toyunda.pl [options] file.ini
[SNIP]
skarsnik@gobbla:~/Data/devel/toyunda-tools$ ruby toyunda.rb
Usage: toyunda.rb {file.ini,playlist,part of name} [MPLAYER_OPTIONS] [--amphi4=n]
[SNIP]
skarsnik@gobbla:~/Data/devel/toyunda-tools$ perl toyunda.rb
Usage: toyunda.rb {file.ini,playlist,part of name} [MPLAYER_OPTIONS] [--amphi4=n]
[SNIP]
skarsnik@gobbla:~/Data/devel/toyunda-tools$ python toyunda.pl
File "toyunda.pl", line 4
use strict;
^
SyntaxError: invalid syntax
skarsnik@gobbla:~/Data/devel/toyunda-tools$ python toyunda.rb
File "toyunda.rb", line 36
module Toyunda
^
SyntaxError: invalid syntax
C'est vraiment nul ce langage, ça sert vraiment à rien.
# Ouais c k3 de l4 merdeuh !
Posté par rangzen (site web personnel) . Évalué à 10.
#! /usr/bin/env perl
print "Hello World\n";
cedric@lef:~/tmp$ bash hello.pl
Warning: unknown mime-type for "Hello World\n" -- using "application/*"
Error: no such file "Hello World\n"
bash c'est pourri, ça sert vraiment à rien !
# C'est bien de savoir à quoi ca sert...
Posté par fat_cartman . Évalué à 5.
Par exemple pour un script sans extension.
Alors "Python ca put", c'est pas francais, et faut pas etre malin pour tirer des conclusions de ce genre sur des erreurs comme cela.
[^] # Re: C'est bien de savoir à quoi ca sert...
Posté par ckyl . Évalué à 10.
Par exemple sous FreeBSD :
http://fxr.watson.org/fxr/source/kern/imgact_shell.c?v=RELENG53#L40(...)
Fait le test de faire un execv(2) sur un script exectuable.
> Par exemple pour un script sans extension.
Quel rapport ? Depuis quand sous UNIX l'extension sert a quelque chose ? (hormis peut etre aux explorateurs de fichiers). ./toto ou ./toto.sh ou ./toto.pl c'est la même chose
[^] # Re: C'est bien de savoir à quoi ca sert...
Posté par fat_cartman . Évalué à -1.
De plus, je fais rarement exécuter des scripts directement au noyau, en général je laisse faire ça à mon bash.
Par contre c'est vrai que j'ai certainement commis une bourde en parlant des extensions, c'est pas le reflet de ma pensée, c'est difficile à dire... :)
[^] # Re: C'est bien de savoir à quoi ca sert...
Posté par M . Évalué à 8.
Voir dans linux/fs/.... pour plus d'info ...
[^] # Re: C'est bien de savoir à quoi ca sert...
Posté par ckyl . Évalué à 10.
#include <unistd.h>
int main(int argc, char **argv) {
if (execl(argv[1], NULL) < 0)
return 1;
return 0;
}
$gcc -o shell shell.c
$ cat < toto.sh
#!/bin/sh
echo "Hello !"
^D
$./shell toto.sh
Hello !
Voila ce que fait un shell. Tu fais TOUJOURS executer tes scripts directement au noyau. Lorsque tu fais un exec*(2) sur un executable le noyau regarde a quel type d'executable il a a faire. Souvent c'est de l'ELF, mais ca peut aussi etre du a.out, XXX ou du script shell. Dans ce cas il repere la sequence magique #! et lance l'interpreteur.
D'ailleur dans linux c'est la http://fxr.watson.org/fxr/source//fs/binfmt_script.c?v=linux-2.6.9#(...) tu as une fonction, search_binary_handler, qui parcours l'ensemble des formats reconnus par le noyau et regarde si ca correspond a ton fichier. La tu as les actions prises par le noyau si il recontre un script qui commence par un shebang. (C'est un peu pas tres lisible certe)
Derriere chaque lancement d'un programme tu as forcement un appel a execve() du noyau. Le role du shell c'est simplement de te fournir une invite de commande et des moyens d'edition de cette invite plus ou moins evolués
# Tout simplement...
Posté par Fnor . Évalué à 6.
./toyunda.pl
./toyunda.rb
Je vois pas l'intérêt de définir un shellbang perl pour lancer un programme perl depuis ruby. C'est super tordu ton truc là !
Le shellbang sert à lancer un script (avec les droits d'exécution) directement depuis bash sans préciser l'interpréteur à utiliser. Pour l'utilisateur, ca le fait ressembler à n'importe quel exécutable compilé.
Pour Python :
skarsnik@gobbla:~/Data/devel/toyunda-tools$ head -n 1 toyunda.py
#!/usr/bin/python
Puis:
./toyunda.py
Et tout va bien :-)
<mon avis>C'est plutôt du coté de ton utilisation des shellbang qu'est le problème...</mon avis>
[^] # Re: Tout simplement...
Posté par Papey . Évalué à 7.
[^] # Re: Tout simplement...
Posté par Sylvain Colinet (site web personnel) . Évalué à -3.
j'aime bien trouver des arguments a 0.02 euros :)
[^] # Re: Tout simplement...
Posté par bartman . Évalué à 2.
# Shebang
Posté par Jazz . Évalué à 5.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.