bash et lancement script python
Le
Alain Rpnpif
Bonjour,
Depuis toujours quand je mettais en première ligne d'un script python :
#!/usr/bin/python
Python était lancé sur le script.
Pourquoi maintenant (Debian Squeeze), la commande ./monscript.py donne :
line 1: #!/usr/bin/python: Aucun fichier ou dossier de ce type
$ sh ./monscript.py
./monscript.py: 1: #!/usr/bin/python: not found
$ bash ./monscript.py
./monscript.py: line 1: #!/usr/bin/python: Aucun fichier ou dossie=
r de ce type
$ which python
/usr/bin/python
python monscript.py marche. Je ne comprends pas.
Auriez-vous une explication ?
--
Alain Rpnpif
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20110423170329.5b288ff2@arrcuis.home
Depuis toujours quand je mettais en première ligne d'un script python :
#!/usr/bin/python
Python était lancé sur le script.
Pourquoi maintenant (Debian Squeeze), la commande ./monscript.py donne :
line 1: #!/usr/bin/python: Aucun fichier ou dossier de ce type
$ sh ./monscript.py
./monscript.py: 1: #!/usr/bin/python: not found
$ bash ./monscript.py
./monscript.py: line 1: #!/usr/bin/python: Aucun fichier ou dossie=
r de ce type
$ which python
/usr/bin/python
python monscript.py marche. Je ne comprends pas.
Auriez-vous une explication ?
--
Alain Rpnpif
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20110423170329.5b288ff2@arrcuis.home

Poser une question


On Sat, 23 Apr 2011 17:03:29 +0200, Alain Rpnpif wrote:
À tout hasard, est-ce que ton script aurait pu transiter par une
machine Windows ou bien être transmis par mail ?
Dans ce cas, il est possible que les fins de ligne Unix (LF) aient été
remplacés par des fins de ligne Windows (CR-LF). Si c'est le cas, la
première ligne de ton script est vue comme
#!/usr/bin/python<CR>
et c'est donc "/usr/bin/python<CR>" qui est cherché au lieu de
"/usr/bin/python".
Pour vérifier, affiche ton script avec un éditeur hexadécimal (ou tape
"od -c -tx1 monscript.py" dans un terminal) et regarde si les "n" sont
précédés par des "r".
Au pire, lance simplement un "dos2unix monscript.py" : si le soucis est
bien là, ça le réglera (et quoi qu'il en soit, ça ne casse rien).
A+
Jean-Jacques
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Merci Jean-Jacques.
Le problème était bien de ce style : des octets non affichables m ais en
début de fichier !
Le fichier litigieux :
00000000 EF BB BF 23 â 21 2F 75 73 â 72 2F 62 69 â 6E 2F 70 79 . #!/usr/bin/py
00000010 74 68 6F 6E â 0A thon
Un fichier qui se lance normalement :
00000000 23 21 2F 75 â 73 72 2F 62 â 69 6E 2F 70 â 79 74 68 6F #!/usr/bin/pytho
00000010 6E 0A n
C'est de ma faute : je l'avais affiché avec Abiword et bêtement e nregistré ce qui a ajouté ces caractères (il aurait dû le laisser en format brut).
Un truc marrant : la commande file affiche ceci
1: Python script text executable
2: a /usr/bin/python script text executable
ce qui a pu trompé.
Encore merci.
--
Alain Rpnpif
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/