[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

FAQ FCOL: Re: probleme de script [debutant total]



Remarque : Et a quoi ca sert d'ecrire des bouts de FAQ pour fcol si on met
pas l'integrateur en CC ?

On Tue, 18 Apr 2000, Jerome Combaz wrote:

> >Mais dans la FAQ fcol, le problème est ``Le shell en prend pas en
> >compte un exécutable placé dans un répertoire qui figure pourtant dans
> >le PATH.''.  Ce n'était pas le problème de JC Helary.  Il faudrait donc
> >une nouvelle entrée dans la FAQ fcol.
> 
> 
> Ah bon !?
> 
> ==========

Question : mon script ne veut pas se lancer

> Contrairement à DOS, le répertoire courant (qui s'appelle .) n'est pas
> recherché explicitement lors de la recherche des exécutables. Solution :
> l'ajouter dans le PATH (déconseillé pour des raisons de sécurité(*)) ou
lancer
> l'exécutable ainsi : ./programme

De plus, il faut vérifier que le script est bien marqué executable par le
systeme. Au besoin, on fera 
chmod a+x <le nom du script>
pour que ca devienne le cas.

Enfin, pour les scripts, il faut que la premiere ligne du fichier indique
quel est le programme sensé interpréter le fichier. La syntaxe est
les deux symboles '#!' suivis du chemin complet pour acceder au
programme (et cette ligne DOIT ETRE LA PREMIERE). Par exemple, pour un
script perl, il faut : 
#!/usr/bin/perl
pour du bash :
#!/bin/bash
pour du python
#!/usr/bin/python
et ainsi de suite. On peut passer des arguments, si on a envie. Par
exemple pour que perl râle à l'usage de variables non initialisées, on
fait :
#!/usr/bin/perl -w


(*) La sécurité du PATH (autre entrée ?)
Si on met le répertoire courant dans le PATH, on risque des ennuis : 
- s'il se trouve avant les autres répertoires (exemple bash export
PATH=".:$PATH"), n'importe qui peut vous faire executer des commandes
stupides : il suffit de poser un executable nommé 'cd' ou 'ls' dans /tmp
qui fait de vilaines choses, et celui qui a rajouté le répertoire '.' dans
son path va se faire avoir.
- Si on le met à la fin (export PATH="$PATH:."), on est sur de toujours
utiliser le vrai 'cd', et le vrai 'ls'. Mais on est pas à l'abri pour
autant : on est tous un peu dislexiques, et si les mechants programmes
sus-cités s'appellent 'xs' ('cd' en se trompant d'un colonne de touches
vers la gauche sur le clavier), ou 'sl' ('ls' à l'envers), ils ont encore
de bonnes chances de pieger les imprudents.

Conclusion, sur une machine multi-utilisateurs, il ne faut pas mettre le
répertoire courant dans le PATH, et appeller les scripts par :
./nomDuScript


Voila, voila, Mt.


Reply to: