Forum Programmation.shell execution script bash d'un sous répertoire

Posté par  .
Étiquettes : aucune
0
18
mar.
2009
Une question triviale : j'essaye de faire executer un script dans un sous répertoire et je ne comprend pas pourquoi bash ne l'execute pas (après avoir déjà regarder que les permissions sont ok )

exemple :

me@robby:~/faustest$ !512
cat dir1/myscript.sh
#!/bin/bash
touch fichier


lorsque j'execute du répertoire courant contenant dir1 , sh dir1/myscript.sh , il n'execute pas le touch .. Par contre si je vais dans dir1 et que je l'execute il le fait bien .

j'ai loupé qqch ?
  • # chez moi ca marche :)

    Posté par  . Évalué à 3.

    tu as bien les droit d'écriture dans le répertoire courant ?
    car si tu fais
    sh rep1/myscript.sh
    il te faut le droit d'écriture dans le répertoire contenant rep1
    si tu veux que le script fasse un touch du fichier dans le répertoire du script, il faut changer de répertoire pour aller dans celui du script

    ça se fait à coup de
    $0
    cd
    dirname
    ensuite faut juste les articuler correctement :D

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

    • [^] # Re: chez moi ca marche :)

      Posté par  . Évalué à 2.

      Oui , j'ai les droits , ca marche pas en root non plus par ailleur.
      En fait le touch c'est pour testé j'aimerais executer un script d'un sous repertoire simplement sans faire de cd
      • [^] # Re: chez moi ca marche :)

        Posté par  . Évalué à 3.

        bin si je fais
        $> cat bunk/plop.sh
        #!/bin/bash
        touch plop
        $> sh bunk/myscript.sh
        $> ls
        bunk/ plop

        ça marche.

        si tu veux que le plop soit dans le répertoir de ton script il faut
        * préfixer le fichier par le répertoire ( obtenu dans le scipt par un dirname "$0", t'as aussi des astuces pour que ce soit plus rapide mais c'est moins lisible)
        * changer le répertoire de travail du script ( fait par un cd dans le script )

        Il ne faut pas décorner les boeufs avant d'avoir semé le vent

  • # un script peut se débugguer

    Posté par  (site web personnel) . Évalué à 4.

    quand tu le lances avec:
    dir1/myscript.sh
    "fichier" va être dans le répertoire en cours et non dans "dir1"
    sinon, tu peux rajouter un set -x
    comme suit:
    #!/bin/bash
    set -x
    touch fichier

    et tu auras la liste de ce que fait le script

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.