OVH Cloud OVH Cloud

test de script permission denied

26 réponses
Avatar
yvon.thoravalNO-SPAM
je rencontre un "permission denied" que je ne comprends pas sur un
script groovy basic :

~/work/groovy/essais> ls -al
[...]
-rwxr-xr-x 1 yvon yvon 138 5 Dec 09:34 helloWorld.groovy

la première ligne de mon script :
#!/Users/yvon/CVS/groovy/groovy-core/target/install/bin groovy
et j'ai bien les mêmes perms dans :
/Users/yvon/CVS/groovy/groovy-core/target/install/bin
~/CVS/groovy/groovy-core/target/install> ls -al bin
[...]
-rwxr-xr-x 1 yvon yvon 5028 5 Dec 09:01 groovy
[...]
--
yt

10 réponses

1 2 3
Avatar
Christophe Cuq
(Yvon Thoraval) writes:

Ben oui mais quand-m^me, j'ai -- au moins -- lu la réponse de saïd )))


:)

par contre, là ou j'hésite toujours c'est entre "#!" et le reste,
faut-il une espace ?


Noramalement non, mais je n'ai jamais essayé sans. (et la dernière
fois j'ai oublié le !, ça marchait moins bien...)

ou encore, est-ce équilatéral ?


Aucune idée.

--
CHC

Avatar
yvon.thoravalNO-SPAM
Christophe Cuq wrote:

echo $GROOVY_HOME
echo $MAVEN_HOME
echo $PATH
pour voir ce que ça donne, chuis pas sûr que ça soit ce que tu veux...)


Si, ça c'est bon, j'ai installé groovy par maven...

et puis la commande groovy est ok donc le path et le groovy_home aussi
--
yt

Avatar
yvon.thoravalNO-SPAM
Saïd wrote:

Il cherche le fichier
/Users/yvon/CVS/groovy/groovy-core/target/install/bin/groovy^Mprintln(

qui n'existe pas. Utilise un editeur de texte qui met les bons retours a la
ligne.

mes fins de lignes sont de type "UNIX"


Apparemment pas.


Oui, c'était ça bravo, merci, SubEthaEdit n'indique pas les bons types
de Fins de ligne, il indiquait donc "UNIX", j'ai juste fais un convertir
to unix, enregistré et hop ...
--
yt


Avatar
Christophe Cuq
(Yvon Thoraval) writes:

et puis la commande groovy est ok donc le path et le groovy_home aussi


Et j'ai vu ta réponse à Saïd aussi, juste un problème de fin de
lignes, arf :)

(Je ne connais SubEthamachin, mais rien que ce problème m'en ferait
changer vite fait...)

--
CHC, Vi(m) ou (X)Emacs, sinon rien :)

Avatar
yvon.thoravalNO-SPAM
Christophe Cuq wrote:

(Je ne connais SubEthamachin, mais rien que ce problème m'en ferait
changer vite fait...)


en +, il sauve les fichiers sous user:www au lieu de user:user car c'est
un tdt collaboratif...m'enfin question comptage de mots il m'a rendu
service...
TexMate n'est pas mal non +
--
yt

Avatar
blanc
Yvon Thoraval wrote:

ou encore, est-ce équilatéral ?


Après essai ça semble equilateral. Mais en fait ça peut dépendre du
shell interactif sous lequel tu lances la commande. Pour moi c'est zsh.

JPaul.

--
/==/==- Jean-Paul BLANC
/ /--/--// quelque-part (somewhere)
|/| L | en (in)
/|| = ||| FRANCE

Avatar
Saïd
JPaul :
Yvon Thoraval wrote:

ou encore, est-ce équilatéral ?


Après essai ça semble equilateral. Mais en fait ça peut dépendre du
shell interactif sous lequel tu lances la commande. Pour moi c'est zsh.



Non, ca ne peut pas dependre du shell. Le shell applle le noyau et lui
demande de lancer l'executable correspondant au script. C'est le noyau qui
se rend compte qu'il s'agit d'un fichier commencant par #!. Il interprete la
suite de la ligne comme un executable qu'il execute et a qui il passe le
fichier du script sur l'entree standard:

brian-~/bin $ cat script
#!/bin/cat
Ici la terre
vous m'entendez?

brian-~/bin $ ./script
#!/bin/cat
Ici la terre
vous m'entendez?

--
Saïd.
C programmers never die - they're just cast into void.


Avatar
yvon.thoravalNO-SPAM
Saïd wrote:

Non, ca ne peut pas dependre du shell.


c logique ce que tu dis là, cependant j'ai fait le p'tit essai suivant :
toto-~>javac *va
ok comme d'hab j'ai mes classes...

j'essaie avec un blanc :
toto-~> javac *va
pareil j'ai mes classes...

idem avec groovy

ça ne dépend donc pas du script (j'utilise aussi zsh)

si je change la première ligne de ce scipt :
#!<une tétrachiée de blancs>
/Users/yvon/CVS/groovy/groovy-core/target/install/bin/groovy

idem ça roule...
donc, peut-on en conclure que, comme le noyau voit le blanc comme
séparateur, les blancs ne sont pas interprétés, c'est donc équilatéral
(avoir ou pas un ou plusieurs)^équilatéral(ne dépend pas du shell)

d'ac ?
--
yt

Avatar
Saïd
Yvon Thoraval :
Saïd wrote:

Non, ca ne peut pas dependre du shell.


c logique ce que tu dis là, cependant j'ai fait le p'tit essai suivant :


Je ne me prononcais que sur le fait que (l'espace entre #! et le nom de la
commande soit genant) peut dependre du shell utilise, la reponse est non.

toto-~>javac *va
ok comme d'hab j'ai mes classes...

j'essaie avec un blanc :
toto-~> javac *va
pareil j'ai mes classes...



normal.

idem avec groovy

ça ne dépend donc pas du script (j'utilise aussi zsh)

si je change la première ligne de ce scipt :
#!<une tétrachiée de blancs>
/Users/yvon/CVS/groovy/groovy-core/target/install/bin/groovy

idem ça roule...
donc, peut-on en conclure que, comme le noyau voit le blanc comme
séparateur, les blancs ne sont pas interprétés, c'est donc équilatéral
(avoir ou pas un ou plusieurs)^équilatéral(ne dépend pas du shell)

d'ac ?


Certainement.

--
Saïd.
C programmers never die - they're just cast into void.


Avatar
blanc
Saïd wrote:

Non, ca ne peut pas dependre du shell. Le shell applle le noyau et lui
demande de lancer l'executable correspondant au script. C'est le noyau qui
se rend compte qu'il s'agit d'un fichier commencant par #!. Il interprete la
suite de la ligne comme un executable qu'il execute et a qui il passe le
fichier du script sur l'entree standard:


Pour moi, j'avais toujours pensé que c'était le shell qui faisait ce
test du #! en début de fichier, et je ne vois d'ailleurs pas en quoi ce
que tu donnes en exemple (ici la terre) prouve quoique ce soit.

J'ai donc fait un essai de lancer un script **dans un programme c** par
un fork suivi d'un exec dans lequel je n'ai mis que le chemin du script,
et effectivement cela a marché.

Donc je m'incline.

Cependant je serais curieux de lire une doc indiquant en clair que c'est
cela. As-tu une référence ?

JPaul.


--
/==/==- Jean-Paul BLANC
/ /--/--// quelque-part (somewhere)
|/| L | en (in)
/|| = ||| FRANCE

1 2 3