Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Linux.debutant : bash_profile et autres...

Posté par malte () le 28 septembre 2006
Bonjour,



Linux est un univers entièrement neuf pour moi.

J'ai un petit espace réservé sur un serveur(Red Hat 7), où j'accède via Putty,

et je m'essaye à divers petits scripts bash dans mon répertoire utilisateur.



1ere contrariété : je n'arrive rien à faire dans mon fichier .bash_profile.

J'ai lu plein de choses sur le sujet, peut-être trop car je ne sais plus

où j'en suis, entre .bash_profile et .bashrc



Quoique je mette dans ces fichiers, ce n'est pas pris en compte, sauf peut-être

le PATH, mais les alias eux ne fonctionnent jamais par exemple



1) Changer l'invite, qui se présente comme ça actuellement :

bash-2.05$


par

PS1='\[\u@\h \W \$ >\]'


Quand je mets ça dans bash_profile, l'invite est bien changée, mais le

curseur pe place au début de l'invite... Et quand je tape, ça efface le prompt

au fur et à mesure...







2) Pour lancer un exécutable, je fais :

sh test.sh




Quand je veux faire simplement

./test.sh


j'ai le résultat :

bash: ./test.sh: bad interpreter: Permission denied


Que faut-il pour que cette syntaxe soit acceptée ?



Merci.

> Lire le message (23 commentaires, moyenne: 1,7).  

Vous avez demandé le commentaire #759444.

#!/bin/bash

Posté par aurel (page perso, ) le 28/09/2006 à 08:37. (lien). Évalué à 3.

Tu peux mettre "#!/bin/bash" en guise de première ligne de ton script, et faire un "chmod +x monscript" afin de le rendre executable.

  • [^]Re: #!/bin/bash

    Posté par malte () le 28/09/2006 à 09:49. (lien). Évalué à 1.

    Mais il est déjà exécutable, ça je le sais faire :)
    Je veux juste savoir comment on peut l'exécuter en tapant simplement
    ./nom_script.sh

    • [^]Re: #!/bin/bash

      Posté par Gyro Gearllose () le 28/09/2006 à 10:03. (lien). Évalué à 2.

      As-tu lu et compris la réponse apportée par aurel ?
      Si tu veux lancer ton script en faisant ./nom_script.sh, ton fichier dois commencer par :


      #!/bin/bash

      Tant qu'il n'y aura pas cet appel à un shell (d'ailleurs, tu peux remplacer bash par sh, ksh, zsh ou autres, selon le script lui même, selon les spécificités propres à chaque shell utilisées dans ton script), ton script aura beau avoir le droit d'exécution, il ne pourra pas être lancé comme tu souhaites le faire.
      Voilà, en espérant que ça aide.

      --
      All articles which are excluded shall be deemed included
      Tous les articles exclus sont considérés inclus
      --Brian de Palma in Phantom of the Paradize
      • [^]Re: #!/bin/bash

        Posté par malte () le 28/09/2006 à 10:22. (lien). Évalué à 1.

        J'insiste :)
        J'ai déjà cette ligne dans mon fichier exécutable :


        #!/bin/bash

        clear
        echo "Test"
        echo

        • [^]Re: #!/bin/bash

          Posté par Gyro Gearllose () le 28/09/2006 à 11:11. (lien). Évalué à 2.

          Ah, bah déjà, avec un peu de code, on en sait un peu plus !
          Ceci-dit, tu as raison d'insister.
          bash est-il bien situé dans /bin alors ?
          Tu peux probablement t'en assurer en tapant au prompt :
          $ type bash

          Si ça répond :
          bash is /bin/bash
          c'est simple : je jette l'éponge, car ça dépasse mes compétences.
          Sinon, si ça répond par exemple :
          bash is /usr/local/bash
          Alors, il faut changer la première ligne de ton script en conséquence. Voilà, j'espère _vraiment_ que cette aide te sera utile !

          --
          All articles which are excluded shall be deemed included
          Tous les articles exclus sont considérés inclus
          --Brian de Palma in Phantom of the Paradize
          • [^]Re: #!/bin/bash

            Posté par malte () le 28/09/2006 à 11:28. (lien). Évalué à 1.

            Ça me répond :
            bash is /bin/bash
            :-)

            • [^]Re: #!/bin/bash

              Posté par Gyro Gearllose () le 28/09/2006 à 11:35. (lien). Évalué à 2.

              Ben non, c'est pas drôle....
              Si je récapitule, tu as un script dont le contenu ressemble peu ou prou à ceci :


              #!/bin/bash
              echo Plop

              Tu l'as édité avec vi, emacs peu importe, mais il est bien au format unix ?
              Au pire aller, tu peux essayer ça :

              cat > test.sh <<EOF
              #!/bin/bash
              echo Plop
              EOF

              Ensuite, tu changes les droits sur ce fichier :
              $ chmod u+x test.sh
              Et quand tu tapes :
              $ ./test.sh
              Ca te répond :
              bash: ./test.sh: bad interpreter: Permission denied

              J'y perds mon latin^Wshell...

              --
              All articles which are excluded shall be deemed included
              Tous les articles exclus sont considérés inclus
              --Brian de Palma in Phantom of the Paradize
              • [^]Re: #!/bin/bash

                Posté par malte () le 28/09/2006 à 11:58. (lien). Évalué à 1.

                Merci de ton coup de main.

                Oui, le fichier est bien au format Unix. Et la réponse est bien

                $ ./test.sh

                bash: ./test.sh: bad interpreter: Permission denied

                • [^]Re: #!/bin/bash

                  Posté par bad sheep (page perso, ) le 28/09/2006 à 12:11. (lien). Évalué à 2.

                  que donne la ligne

                  /bin/bash test.sh

                  ?

                  • [^]Re: #!/bin/bash

                    Posté par malte () le 28/09/2006 à 13:27. (lien). Évalué à 1.

                    Elle exécute le script, comme si j'avais fait
                    sh test.sh

                    • [^]Re: #!/bin/bash

                      Posté par bad sheep (page perso, ) le 28/09/2006 à 16:28. (lien). Évalué à 2.

                      Possibilité: le répertoire dans lequel tu te trouves est monté avec l'option noexec ... vérifie dans /etc/fstab que ta partition ne contient pas cette option de montage... auquel cas il suffit de la supprimer pour que tout fonctionne.

                  [^]Re: #!/bin/bash

                  Posté par Gyro Gearllose () le 28/09/2006 à 12:11. (lien). Évalué à 2.

                  De rien, c'est un peu le but des forums, non ?
                  As-tu le droit d'exécuter bash alors ?
                  Pour t'en assurer, tu peux faire au choix :
                  $ ls -l /bin/bash
                  Chez moi, ça donne ça :
                  -rwxr-xr-x 1 root root 573241 2006-04-25 09:26 /bin/bash

                  Ou encore :
                  $ /bin/bash


                  Ou encore :
                  $ ps
                  Chez moi, dans une console toute neuve, j'obtiens :
                  PID TTY TIME CMD
                  10216 pts/2 00:00:00 bash
                  10246 pts/2 00:00:00 ps

                  Peu importe laquelle tu utilises, mais peut-être que tu n'as tout simplement pas le droit d'exécuter ou bash, ou des scripts shells, ou les deux. On doit pouvoir interdire ça d'une façon ou d'une autre.
                  As-tu la main sur le serveur en tant qu'administrateur ou pas ?
                  Si ce n'est pas le cas, demande à l'administrateur (si tu peux), il sera probablement d'un meilleur secours que moi...

                  --
                  All articles which are excluded shall be deemed included
                  Tous les articles exclus sont considérés inclus
                  --Brian de Palma in Phantom of the Paradize
                  • [^]Re: #!/bin/bash

                    Posté par malte () le 28/09/2006 à 13:37. (lien). Évalué à 1.

                    ls -l /bin/bash
                    donne la même chose que toi

                    ps aussi

                    PID TTY TIME CMD
                    15846 pts/0 00:00:00 bash
                    4627 pts/0 00:00:00 ps


                    Pourtant des scripts j'en exécute déjà, rien que quand je lance mon test.sh, non ?

                    Et j'en ai fait d'autres, tous s'exécutent normalement., sauf que je ne comprends pas pourquoi dans tous les tutoriaux, on dit que ça peut s'exécuter en tapant juste ./monscript
                    :)
                    Bon, c'est pas dramatique non plus...

                    Oui, je peux avoir un accès en tant que root

                    • [^]Re: #!/bin/bash

                      Posté par Amand Tihon (page perso, ) le 28/09/2006 à 14:06. (lien). Évalué à 3.

                      Peut-être que la partition où se trouve le script est montée avec l'option noexec ?

                      • [^]Re: #!/bin/bash

                        Posté par malte () le 28/09/2006 à 14:44. (lien). Évalué à 1.

                        Alors là, pas la moindre idée, il s'agit d'un serveur dédié, chez OVH, je ne connais rien à tout ça.

                        • [^]Re: #!/bin/bash

                          Posté par Calim' Héros (Jabber id, page perso, ) le 28/09/2006 à 15:59. (lien). Évalué à 2.

                          cat /etc/mtab

                          Et la si tu vois noexec sur la ligne de ta partition c'est que la partition est monté en noexec

                          --
                          Ce commentaire est :
                          Génial, Nul, 42
                          • [^]Re: #!/bin/bash

                            Posté par malte () le 29/09/2006 à 08:21. (lien). Évalué à 1.

                            Bah, non, aucun " noexec " après exécution de cette commande.