IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

She-bang line et PATH


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Par défaut She-bang line et PATH
    Bonjour à tous.

    Je viens d'écrire un script, mon premier sous Linux. Habituellement sur Sun ou HP je commence par #!/bin/ksh ou #!/bin/sh, sur ma linux-box j'ai commencé par #!/bin/bash et j'ai droit à un méchant message :
    bash: /home/rt/bin/pingus: /bin/bash: bad interpreter: Permission non accordée
    Ce qui m'intrigue : /bin/bash: bad interpreter
    Ce qui m'interloque : Permission non accordée ; les droits sont à 744 ! De toutes façons à 777 c'est pareil.

    Si j'ôte la she-bang line il ne me parle plus du shell mais dit quand même :
    bash: /home/rt/bin/pingus: Permission non accordée
    J'ai écris ce script pour gérer plusieurs joueurs.
    Le jeu se trouve dans /usr/games/ , mon script dans $HOME/bin .
    Ma variable PATH commence par $HOME/bin et se termine par /usr/games/
    Jeu et script portent le même nom et conformément à $PATH le système doit lancer le script. Comme il n'a pas l'air d'équerre je l'ai renommé, ainsi le jeu doit être exécuté. Et j'obtiens ce message :
    bash: /home/rt/bin/pingus: Aucun fichier ou répertoire de ce type
    La recherche commence bien dans $HOME/bin mais s'y arrête et ne va pas dans /usr/games/ !

    Quelque chose m'échappe ! Et vous ?

  2. #2
    Membre émérite
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Par défaut
    Bonjour,

    Il se peut que ton script se trouve sur une partition montee avec l'option noexec. Tu devrais verifier, on ne sait jamais.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Par défaut
    Non, le file-system ne présente aucune restriction.
    Je n'ai toujours pas le droit d'exécution en ayant pourtant les bons droits.
    La variable PATH marche mieux (les mystères de l'informatique m'épateront toujours...)

  4. #4
    Membre Expert

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Par défaut
    Bonjour

    Il se peut que ton script se trouve sur une partition montee avec l'option noexec. Tu devrais verifier, on ne sait jamais.
    .... ou des fois des espaces qui se baladent sur la première ligne ... # = 1er caractere, ! = 2ieme caractere, / = troisième caractère.... Et pas d'espace après le nom du binaire à utiliser pour interpréter le fichier.

    A vérifier : droits d'exécution du script & de l'interpréteur (on ne sais pas duquel tu parle exactement), d'éventuels droits spéciaux sur l'interpréteur (ls -l donne t'il des x pour le droit d'exécution ou des (s/g/t) ? Que ce passe t'il si tu impose le shell (bash fichier) ?

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Par défaut
    J'écris des scripts depuis assez longtemps pour ne pas mettre d'espaces où il n'en faut pas. Quant aux droits, étant le propriétaire du script, que puis-je me donner de plus que 755 ? Ou 777 qui, en l'occurence, ne change rien...

  6. #6
    Membre Expert

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Par défaut
    Je parle aussi des droits de l'interpréteur

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Par défaut
    rt@mitra:~/.pingus/savegames$ ls -l /bin/bash
    -rwxr-xr-x 1 root root 645140 2005-10-05 14:16 /bin/bash

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    La recherche commence bien dans $HOME/bin mais s'y arrête et ne va pas dans /usr/games/ !
    si tu fait un :
    cela donne quoi ? (un ; a la place d'un : ?)
    les droits sur /usr/games/XXXX sont 'ils correctes (y compris repertoire)
    un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sh mon_script
    #ou
    sh
    /home/rt/bin/mon_script
    dans le script les chemins sont ils en absolue ? esque cela change quelque choses ?

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Par défaut
    Et avec :

    Ca marche ?

  10. #10
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Par défaut
    Quel est l'effet de cette ligne ?
    #!/usr/bin/env bash
    Une she-bang line ne sert qu'a appeler un shell, pas exécuter une commande (env).


    Mais oui MarcG, bash pingus marche. Conclusion ?

  11. #11
    Membre très actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Par défaut
    Et en sourcant le script cela fonctionne t'il ?

    Par exemple :

    . /path/to/myscript.sh

    J'ai deja eu la une erreur sembable sur les debian unstable. En sourcant cela fonctionnait mais pas moyen de lancer le script directement.

    Je ne connais pas la cause exacte, mais ca s'est corrigé apres qq jours via une mis a jour du systeme. Je soupconne un pb dans les librairies utlisés par bash (libc.so & co ... ).

  12. #12
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Par défaut
    Oui, ça marche. Conclusion ?

  13. #13
    Membre très actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Par défaut
    Meheureusement, il n'y a pas de conclusion possible a ce niveau .

    On peut regarder les points suivants et essayer de compredre :

    - de quelle distrib s'agit t'il
    - quelles sont les versions de bash et des libs retournées par un ldd /bin/bash ?
    - le sh dans /bin/sh est un lien vers /bin/bash ?
    - en changeant le shebang en #!/bin/sh cela fonctionne t'il mieux

  14. #14
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    heuu la je colle .....
    quel est le shell courant de l'utilisateur ? (/etc/passwd)
    si bash le_script fonctionne les droits de le_script sont bon ? ( on tourne en rond ...)

  15. #15
    Membre très actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Par défaut
    Je pense que le message "permission denied" ne reflete pas vraiement un probleme de permission, mais plus un pb systeme.

    Apres, c'est un avis perso basé sur mon experience de cette erreur, et je peux etre a coté de la plaque a 150% ....

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Par défaut
    Citation Envoyé par MitraSun
    Quel est l'effet de cette ligne ?
    #!/usr/bin/env bash
    Une she-bang line ne sert qu'a appeler un shell, pas exécuter une commande (env).

    No comment ...

    http://homepages.cwi.nl/~aeb/std/shebang/

  17. #17
    Membre Expert

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Par défaut
    Citation Envoyé par MarcG
    quel est le shell courant de l'utilisateur ? (/etc/passwd)
    Plus simple :
    Ca sent le truc fourbe... Ca fait pareil avec toustes scripts qui utilisent cet interpréteur ? Si oui, est-ce que le problème persiste si tu met sur la seconde ligne un jolie "exit"... ? Et si tu met le reste en commentaire ?

  18. #18
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Par défaut
    Au temps pour moi getupa, mais tant sur Solaris qu'HP UX je n'ai jamais utilisé ni vu env sur une shebang line...
    Et pour tout dire c'est la première fois que je l'entend dire (ou plutôt le lis).

    Mais pourquoi suis-je noté Invité de passage alors que je suis membre ?

  19. #19
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Par défaut
    Ca sent le truc fourbe... Ca fait pareil avec toustes scripts qui utilisent cet interpréteur ? Si oui, est-ce que le problème persiste si tu met sur la seconde ligne un jolie "exit"... ? Et si tu met le reste en commentaire ?
    Quoi que je fasse, j'ai la même erreur. Y compris avec un script bidon : echo toto. Ce n'est pas une question de droits, permissions, PATH, lien symbolique ou dur, d'environnement.
    C'est... autre chose.

  20. #20
    Membre Expert

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Par défaut
    Ca sent le problème d'interpréteur... Si je suis ce que tu dit, si tu fait un script comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/bash
    echo coucou
    ./script ne fonctionne pas (après chmod bien sur), . script fonctionne, bash script aussi...

    Si tu change l'interpréteur, même punition ? Est-ce qu'il apparait dans /etc/shells (sous BSD, il a pas besoin... peut être que c'est différent sous Linux ou que ca dépends du shell utilisé)... A essayer éventuellement aussi, utiliser un autre shell pour lancer le script (sans conviction ... )

Discussions similaires

  1. she-bang line.
    Par VinnieMc dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2006, 20h09
  2. Réponses: 3
    Dernier message: 10/06/2003, 15h16
  3. Redhat-9 changer le path des databases
    Par jean christophe dans le forum Installation
    Réponses: 7
    Dernier message: 30/05/2003, 18h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo