Execution d'un script

Résolu
Pims -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

je me trouve devant un ...

j'ai plusieur script, tous fonctionnent comme je le souhaite et sont des scripts bash

#!/bin/bash (au debut de chacun de mes scripts)

Ils sont només sans extansion

le problème est le suivant

ils se lancent tres bien de cette manière : sh monscript
mais ce la ne fonctionne pas comme ca : ./monscript

j'ai essayé en metant une extansion .sh en changeant l'interpreteur par ksh mais rien n'y fait

avez vous une solution pour lancer mon script de la manière suivante : ./monscript
Configuration: Linux CentOS kernet 2.6.18 / gcc V4.1.2 / bureau KDE

20 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    #!/din/ksh
    A la place de din mais bin
    #!/bin/ksh

    1
  2. Pims83 Messages postés 21 Statut Membre
     
    salut;

    je me suis inscrit et donc pims = pims83

    j'ai deja fait les recherche sur commentcamarche et google mais j'ai rien trouvé d'interresant

    J'avais deja trouvé cde liens mais il ne m'apporte qucunne reponse

    Merci
    0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    J'avais deja trouvé cde liens mais il ne m'apporte qucunne reponse
    Il faut plutôt savoir selecter.

    Je te fait des copier/coller depuis le lien

    1. Premièrement, rendez votre script exécutable
    chmod +x /home/lami20j/mes_scripts/script.sh


    2.Dans ce cas, il faut aller dans le répertoire qui contient l'exécutable
    cd /home/lami20j/mes_scripts/

    Pour exécuter le script, tapez
    ./script.sh
    la partie en gras à remplacer avec le chemin de ton script

    En résume :
    Tu rends ton script exécutabe.
    Tu te deplaces dans le répetoire où se trouve ton script.
    Tu exécute le script avec la commande ./script

    Tout est dans le lien que je t'ai donné.
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Pims83 Messages postés 21 Statut Membre
     
    re bonjour,

    desolé si je suis desagreable mais je me repète j'avais deja trouvé ce lien et il ne m'aide pas:
    si tu préfère

    Mon fichier est deja executable (chmod 755 monscript.sh) idendentique à chmod +x monscript.sh
    mon terminal et bien evidament dans le repertoire de monscript.sh

    et la lorque je fait ./monscript.sh rien ne se passe

    c'est un script ksh et non plus bash

    avec un sdcript bash il m'affiche ma premiere ligne de code et dit qu'il n'existe aucun fichier ou dossier de ce type

    alors .....

    merci de t reponse
    0
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    C'est quoi le chemin complet de ton fichier?
    0
  7. Pims83 Messages postés 21 Statut Membre
     
    /nfs/users/ils/psp/bga/Desktop/last/

    j'ouvre donc un terminal dans ce repartoir pour y fair un chmod et lancer mon script

    merci
    0
  8. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Tape et affiche
    cd /nfs/users/ils/psp/bga/Desktop/last/ 
    ls -l *.sh
    0
  9. Pims83 Messages postés 21 Statut Membre
     
    -rwxr-xr-x 1 bga sti 2648 aoû 26 11:22 monscript.sh
    0
  10. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Maintenant tape
    ./monscript.sh
    et affiche ce que tu vois à l'écran
    0
  11. Pims83 Messages postés 21 Statut Membre
     
    en tapant ./monscript.sh

    il me redonne la main pour taper une commande (mon script ne fait rien ce qui n'est pas normal car en tapant sh monscript.sh ca fonctionne

    [moi@machine last] ./monscript.sh
    [moi@machine last]

    voilla l'affichage a l'ecran

    en esperant que ce que tu a passé un bon repas ;)
    0
  12. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Ok.
    Peux-tu afficher le contenu de ton script?
    0
  13. Pims83 Messages postés 21 Statut Membre
     
    je veut afficher le contenue de mon script mais je ne peut pas car il faut que je le tape a la main il est sur un autre ordi par le quel je ne peut pas faire passer le fichier

    descripttion vague:

    #!/din/ksh############################
    # nom du script #
    # date version #
    ###################################

    FIC1=fichier1;
    FIC2=fichier2;

    i=0;
    while i<nbligne FIC1 et i<nbligneFIC2
    do
    i=i+1;
    ligneFIC1=ligne$i FIC1
    ligneFIC2=ligne$i FIC2
    echo "carac fichier 1 : " $ligneFIC1 " ; carac fichier2 : " $ligneFIC2;
    done

    exit 0;

    voilla un code tres simplifier qui t'explique ce que fait le script.

    je reprecise le script fonctionne tres bien quent je le lance de la manière suivante : sh monscript.sh

    merci
    0
  14. Pims83 Messages postés 21 Statut Membre
     
    c'est une faute de frappe c'est bien bin

    #!/bin/ksh ##############
    0
  15. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Alors il faut afficher ton script.
    Tu peux le mettre sur une clé usb, pour ne pas être obliger de le retaper.

    Que te donne la commande
    ls -l /bin/k*
    ?
    0
  16. Pims83 Messages postés 21 Statut Membre
     
    j'ai trouvé le souci

    la première ligne du fichier doit etre #!/bin/ksh

    apparent si il y a quelque chose derière ce la ne marche pas

    bon a savoir !!

    thx
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Re,

      la première ligne du fichier doit etre #!/bin/ksh
      Ce n'est que toi qui pouvait voir ça, c'est pour ça qu'en fin de compte je t'ai demandé le contenu de fichier.

      Maintenant je vais te poser une question ;-)
      Pourquoi, malgré le fait que #!/bin/ksh n'était pas la 1ère ligne, avec la commande sh tonscript.sh, le script fonctionnait ?
      0
  17. Pims83 Messages postés 21 Statut Membre
     
    En tapant le script de cette facon cela fonctionne.

    #!/bin/ksh
    ###################################
    # nom du script #
    # date version #
    ###################################

    FIC1=fichier1;
    FIC2=fichier2;

    i=0;
    while i<nbligne FIC1 et i<nbligneFIC2
    do
    i=i+1;
    ligneFIC1=ligne$i FIC1
    ligneFIC2=ligne$i FIC2
    echo "carac fichier 1 : " $ligneFIC1 " ; carac fichier2 : " $ligneFIC2;
    done

    exit 0;

    merci de ta patience lami20j
    0
  18. Pims83 Messages postés 21 Statut Membre
     
    alors ca je ne c'est pas je suppose qu'en faisant "./script" on demande au terminal d'interpréter le fichier dans le type de script que c'est (en loccurence du bash)

    alors qu'en faisant "sh script" on interprète le fichier en tant que script sh

    non peut etre
    qui sais
    0
  19. Pims83 Messages postés 21 Statut Membre
     
    encore mieux en faisant ./script

    le terminal va chercher la preière ligne du fichier contenat le #! pour avoir le fichier de l'interpreteur

    et donc /bin/ksh existe bien mais pas
    /bin/ksh ##################

    c'est ca non ?
    0
  20. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Exécution d'un script

    1. Invoquer l'interpréteur

    Pour exécuter un script on peut utiliser en ligne de commande l'interpreteur.
    Dans ce cas le script n'a pas besoin d'avoir les droits d'exécution (x).
    Il suffit de passer en argument à l’interpreteur le nom de script
    interpreteur script
    interpreteur /chemin/absolu/vers/script
    interpreteur ../chemin/relatif/vers/script


    2. Le script est lancé par le noyau

    Le shell va exécuter un appel système qui demande au noyau d'exécuter le script.
    En fait shell va exécuter un fork() et l'exécution est fait par un processus fils.

    Dans ce cas il faut attribuer les droits d'exécutions avec la commande chmod
    chmod +x script
    ou
    chmod 0755 script
    Pour faire cela il y a une convention (à respecter)
    Le script doit débuter avec #! (shebang) suivi de chemin complet vers l'interpréteur.

    En ce cas on peut lancer le script :

    - en tapant tout simplement le nom de script (à condition que le chemin du script se trouve dans la variable PATH)
    - en utilisant la commande (si on se trouve dans le répertoire du script )
    ./script 

    - en utilisant le chemin complet
    /chemin/complet/vers/script


    0