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 :
par
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 :
Quand je veux faire simplement
j'ai le résultat :
Que faut-il pour que cette syntaxe soit acceptée ?
Merci.
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
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
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
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 :
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
J'insiste :)
J'ai déjà cette ligne dans mon fichier exécutable :
#!/bin/bash
clear
echo "Test"
echo
[^]Re: #!/bin/bash
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
Ça me répond :
bash is /bin/bash
:-)
[^]Re: #!/bin/bash
Ben non, c'est pas drôle....
Si je récapitule, tu as un script dont le contenu ressemble peu ou prou à ceci :
Tu l'as édité avec vi, emacs peu importe, mais il est bien au format unix ?
Au pire aller, tu peux essayer ça :
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
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
que donne la ligne
/bin/bash test.sh
?
[^]Re: #!/bin/bash
Elle exécute le script, comme si j'avais fait
sh test.sh
[^]Re: #!/bin/bash
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
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
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
Peut-être que la partition où se trouve le script est montée avec l'option noexec ?
[^]Re: #!/bin/bash
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
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
Bah, non, aucun " noexec " après exécution de cette commande.