J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script
pour lancer un script.
Si j'ai bien compris la signification de l'expression ./ qui, me semble
t-il, veut dire "situé dans le répertoire courant", je ne vois pas
l'intérêt de mentionner cette expression. J'ai raté quelque chose ?
Merci d'avance
DF
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
lhabert
DF :
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script
Pas d'espace après le « ./ ».
pour lancer un script. Si j'ai bien compris la signification de l'expression ./ qui, me semble t-il, veut dire "situé dans le répertoire courant", je ne vois pas l'intérêt de mentionner cette expression. J'ai raté quelque chose ?
Oui, dans ce cas ci, le « ./ » est complètement inutile. En fait, il sert quand tu cherches à lancer directement un programme situé dans le répertoire courant, et que le répertoire courant n'est pas dans la variable « PATH » (qui indique la liste des répertoires dans lesquels le shell doit chercher les programmes que tu lui demandes d'exécuter). Le shell ne va par défaut pas chercher les programmes dans le répertoire courant (imagine qu'un petit malin mette dans un répertoire à lui un programme nommé « ls », et que tu te déplaces dans ce répertoire...), et il faut mettre explicitement un « ./ » devant pour lui dire que si, tu veux vraiment qu'il le fasse.
DF :
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script
Pas d'espace après le « ./ ».
pour lancer un script.
Si j'ai bien compris la signification de l'expression ./ qui, me semble
t-il, veut dire "situé dans le répertoire courant", je ne vois pas
l'intérêt de mentionner cette expression. J'ai raté quelque chose ?
Oui, dans ce cas ci, le « ./ » est complètement inutile. En fait, il sert
quand tu cherches à lancer directement un programme situé dans le répertoire
courant, et que le répertoire courant n'est pas dans la variable « PATH »
(qui indique la liste des répertoires dans lesquels le shell doit chercher
les programmes que tu lui demandes d'exécuter). Le shell ne va par défaut
pas chercher les programmes dans le répertoire courant (imagine qu'un petit
malin mette dans un répertoire à lui un programme nommé « ls », et que tu te
déplaces dans ce répertoire...), et il faut mettre explicitement un « ./ »
devant pour lui dire que si, tu veux vraiment qu'il le fasse.
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script
Pas d'espace après le « ./ ».
pour lancer un script. Si j'ai bien compris la signification de l'expression ./ qui, me semble t-il, veut dire "situé dans le répertoire courant", je ne vois pas l'intérêt de mentionner cette expression. J'ai raté quelque chose ?
Oui, dans ce cas ci, le « ./ » est complètement inutile. En fait, il sert quand tu cherches à lancer directement un programme situé dans le répertoire courant, et que le répertoire courant n'est pas dans la variable « PATH » (qui indique la liste des répertoires dans lesquels le shell doit chercher les programmes que tu lui demandes d'exécuter). Le shell ne va par défaut pas chercher les programmes dans le répertoire courant (imagine qu'un petit malin mette dans un répertoire à lui un programme nommé « ls », et que tu te déplaces dans ce répertoire...), et il faut mettre explicitement un « ./ » devant pour lui dire que si, tu veux vraiment qu'il le fasse.
R12y
On Thu, 17 Nov 2005 23:52:30 +0100, DF wrote:
Bonjour,
Bonjour
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script pour lancer un script. Si j'ai bien compris la signification de l'expression ./ qui, me semble t-il, veut dire "situé dans le répertoire courant", je ne vois pas l'intérêt de mentionner cette expression.
Quand tu veux lister le contenu d'un répertoire, tu fais: $ ls En vrai, tu a executé "/bin/ls". Si tu enlève l'éxecutable du répertoire "/bin/", que tu le mets dans "/usr/bin/" e que tu refais un $ ls alors tu aura lancé en vrai "/usr/bin/ls". Idem su tu mets "ls" dans "/usr/local/bin".
Pourquoi et comment? Fais $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin
Dans la variable d'environnement PATH il y a une liste de répertoire dans lequel le systeme va chercher l'executable en question. Quand tu fais donc un $ nom_du_script
Le systeme cherchera dans cette liste et seulement dans cette liste. Si il ne trouve rien, alors il abandonne. Tu as aussi le choix d'ajouter ton $HOME à cette liste. Si tu sais ce que tu fais, c'est une solution.
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script
pour lancer un script.
Si j'ai bien compris la signification de l'expression ./ qui, me semble
t-il, veut dire "situé dans le répertoire courant", je ne vois pas
l'intérêt de mentionner cette expression.
Quand tu veux lister le contenu d'un répertoire, tu fais:
$ ls
En vrai, tu a executé "/bin/ls".
Si tu enlève l'éxecutable du répertoire "/bin/", que tu le mets dans
"/usr/bin/" e que tu refais un
$ ls
alors tu aura lancé en vrai "/usr/bin/ls".
Idem su tu mets "ls" dans "/usr/local/bin".
Pourquoi et comment?
Fais
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin
Dans la variable d'environnement PATH il y a une liste de répertoire dans
lequel le systeme va chercher l'executable en question. Quand tu fais donc
un
$ nom_du_script
Le systeme cherchera dans cette liste et seulement dans cette liste. Si il
ne trouve rien, alors il abandonne.
Tu as aussi le choix d'ajouter ton $HOME à cette liste. Si tu sais ce que
tu fais, c'est une solution.
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script pour lancer un script. Si j'ai bien compris la signification de l'expression ./ qui, me semble t-il, veut dire "situé dans le répertoire courant", je ne vois pas l'intérêt de mentionner cette expression.
Quand tu veux lister le contenu d'un répertoire, tu fais: $ ls En vrai, tu a executé "/bin/ls". Si tu enlève l'éxecutable du répertoire "/bin/", que tu le mets dans "/usr/bin/" e que tu refais un $ ls alors tu aura lancé en vrai "/usr/bin/ls". Idem su tu mets "ls" dans "/usr/local/bin".
Pourquoi et comment? Fais $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin
Dans la variable d'environnement PATH il y a une liste de répertoire dans lequel le systeme va chercher l'executable en question. Quand tu fais donc un $ nom_du_script
Le systeme cherchera dans cette liste et seulement dans cette liste. Si il ne trouve rien, alors il abandonne. Tu as aussi le choix d'ajouter ton $HOME à cette liste. Si tu sais ce que tu fais, c'est une solution.
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script pour lancer un script. Si j'ai bien compris la signification de l'expression ./ qui, me semble t-il, veut dire "situé dans le répertoire courant", je ne vois pas l'intérêt de mentionner cette expression. J'ai raté quelque chose ?
En général, on ne met pas . dans le PATH pour éviter d'être paresseux car c'est une faille de sécurité (imagine que ton archive déplie une version binaire de "quelque chose dont le nom existe déjà dans /usr/bin" ; si . est dans le PATH, "quelque chose" sera exécuté à la place du binaire installé, sans que l'utilisateur ne soit averti). C'est particulièrement pernicieux dans le cas où "quelque chose" est exécuté depuis un script, et c'est le comble de l'horreur si l'user est root à ce moment là.
-- Manuel Viet * mailto:
Parce qu'un clavier d'ordinateur a au moins cent touches différentes, adhérez à http://sms.informatiquefrance.com/
In article <437d09ae$0$12751$626a14ce@news.free.fr>, DF wrote:
Bonjour,
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script
pour lancer un script.
Si j'ai bien compris la signification de l'expression ./ qui, me semble
t-il, veut dire "situé dans le répertoire courant", je ne vois pas
l'intérêt de mentionner cette expression. J'ai raté quelque chose ?
En général, on ne met pas . dans le PATH pour éviter d'être paresseux
car c'est une faille de sécurité (imagine que ton archive déplie une
version binaire de "quelque chose dont le nom existe déjà dans
/usr/bin" ; si . est dans le PATH, "quelque chose" sera exécuté à la
place du binaire installé, sans que l'utilisateur ne soit averti).
C'est particulièrement pernicieux dans le cas où "quelque chose" est
exécuté depuis un script, et c'est le comble de l'horreur si l'user
est root à ce moment là.
--
Manuel Viet * mailto:manuel@m-viet.net
Parce qu'un clavier d'ordinateur a au moins cent touches différentes,
adhérez à http://sms.informatiquefrance.com/
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script pour lancer un script. Si j'ai bien compris la signification de l'expression ./ qui, me semble t-il, veut dire "situé dans le répertoire courant", je ne vois pas l'intérêt de mentionner cette expression. J'ai raté quelque chose ?
En général, on ne met pas . dans le PATH pour éviter d'être paresseux car c'est une faille de sécurité (imagine que ton archive déplie une version binaire de "quelque chose dont le nom existe déjà dans /usr/bin" ; si . est dans le PATH, "quelque chose" sera exécuté à la place du binaire installé, sans que l'utilisateur ne soit averti). C'est particulièrement pernicieux dans le cas où "quelque chose" est exécuté depuis un script, et c'est le comble de l'horreur si l'user est root à ce moment là.
-- Manuel Viet * mailto:
Parce qu'un clavier d'ordinateur a au moins cent touches différentes, adhérez à http://sms.informatiquefrance.com/
TiChou
Dans le message <news:dlj242$j1c$, *Luc Habert* tapota sur f.c.o.l.configuration :
DF :
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script pour lancer un script. Si j'ai bien compris la signification de l'expression ./ qui, me semble t-il, veut dire "situé dans le répertoire courant", je ne vois pas l'intérêt de mentionner cette expression. J'ai raté quelque chose ?
Oui, dans ce cas ci, le « ./ » est complètement inutile.
Ou presque. Pour le plaisir, chipotons un peu :
$ sh -i $ sh ./-i Hello world ! $ file ./-i ./-i: Bourne shell script text executable
-- TiChou
Dans le message <news:dlj242$j1c$4@nef.ens.fr>,
*Luc Habert* tapota sur f.c.o.l.configuration :
DF :
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script
pour lancer un script.
Si j'ai bien compris la signification de l'expression ./ qui, me semble
t-il, veut dire "situé dans le répertoire courant", je ne vois pas
l'intérêt de mentionner cette expression. J'ai raté quelque chose ?
Oui, dans ce cas ci, le « ./ » est complètement inutile.
Ou presque. Pour le plaisir, chipotons un peu :
$ sh -i
$ sh ./-i
Hello world !
$ file ./-i
./-i: Bourne shell script text executable
Dans le message <news:dlj242$j1c$, *Luc Habert* tapota sur f.c.o.l.configuration :
DF :
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script pour lancer un script. Si j'ai bien compris la signification de l'expression ./ qui, me semble t-il, veut dire "situé dans le répertoire courant", je ne vois pas l'intérêt de mentionner cette expression. J'ai raté quelque chose ?
Oui, dans ce cas ci, le « ./ » est complètement inutile.
Ou presque. Pour le plaisir, chipotons un peu :
$ sh -i $ sh ./-i Hello world ! $ file ./-i ./-i: Bourne shell script text executable
-- TiChou
David
Le Thu, 17 Nov 2005 23:52:30 +0100, DF a écrit :
fais :
echo "#!/bin/sh" > ls echo "echo Pan ! vous etes mort !" >> ls chmod 777
export PATH=.:$PATH
ls
Le Thu, 17 Nov 2005 23:52:30 +0100, DF a écrit :
fais :
echo "#!/bin/sh" > ls
echo "echo Pan ! vous etes mort !" >> ls
chmod 777
echo "#!/bin/sh" > ls echo "echo Pan ! vous etes mort !" >> ls chmod 777
export PATH=.:$PATH
ls
Pascal
Salut,
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script pour lancer un script. Si j'ai bien compris la signification de l'expression ./ qui, me semble t-il, veut dire "situé dans le répertoire courant", je ne vois pas l'intérêt de mentionner cette expression. J'ai raté quelque chose ?
Oui, dans ce cas ci, le « ./ » est complètement inutile.
Ou presque. Pour le plaisir, chipotons un peu :
$ sh -i
Ne pas oublier de faire "exit" ensuite pour quitter ce shell interactif.
$ sh ./-i Hello world ! $ file ./-i ./-i: Bourne shell script text executable
Toujours aussi taquin hein ? Je doute que préfixer par un "-" le nom d'un fichier et à plus forte raison d'un script ou exécutable fasse partie des bonnes pratiques. Et puis, il y a l'option "--", supportée par nombre de commandes, qui indique que ce qui suit n'est pas à interpréter comme une option même si ça commence par "-" :
$ sh -- -i Hello world ! $ file -- -i -i: Bourne shell script text executable
Salut,
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script
pour lancer un script.
Si j'ai bien compris la signification de l'expression ./ qui, me semble
t-il, veut dire "situé dans le répertoire courant", je ne vois pas
l'intérêt de mentionner cette expression. J'ai raté quelque chose ?
Oui, dans ce cas ci, le « ./ » est complètement inutile.
Ou presque. Pour le plaisir, chipotons un peu :
$ sh -i
Ne pas oublier de faire "exit" ensuite pour quitter ce shell interactif.
$ sh ./-i
Hello world !
$ file ./-i
./-i: Bourne shell script text executable
Toujours aussi taquin hein ?
Je doute que préfixer par un "-" le nom d'un fichier et à plus forte
raison d'un script ou exécutable fasse partie des bonnes pratiques. Et
puis, il y a l'option "--", supportée par nombre de commandes, qui
indique que ce qui suit n'est pas à interpréter comme une option même si
ça commence par "-" :
$ sh -- -i
Hello world !
$ file -- -i
-i: Bourne shell script text executable
J'ai lu dans une doc Linux, de saisir: sh ./ le_nom_du_fichier_script pour lancer un script. Si j'ai bien compris la signification de l'expression ./ qui, me semble t-il, veut dire "situé dans le répertoire courant", je ne vois pas l'intérêt de mentionner cette expression. J'ai raté quelque chose ?
Oui, dans ce cas ci, le « ./ » est complètement inutile.
Ou presque. Pour le plaisir, chipotons un peu :
$ sh -i
Ne pas oublier de faire "exit" ensuite pour quitter ce shell interactif.
$ sh ./-i Hello world ! $ file ./-i ./-i: Bourne shell script text executable
Toujours aussi taquin hein ? Je doute que préfixer par un "-" le nom d'un fichier et à plus forte raison d'un script ou exécutable fasse partie des bonnes pratiques. Et puis, il y a l'option "--", supportée par nombre de commandes, qui indique que ce qui suit n'est pas à interpréter comme une option même si ça commence par "-" :
$ sh -- -i Hello world ! $ file -- -i -i: Bourne shell script text executable
TiChou
Dans le message <news:dlkgip$20tv$, ** tapota sur f.c.o.l.configuration :
$ sh ./-i Hello world ! $ file ./-i ./-i: Bourne shell script text executable
Toujours aussi taquin hein ?
:-P
Je doute que préfixer par un "-" le nom d'un fichier et à plus forte raison d'un script ou exécutable fasse partie des bonnes pratiques.
Certes. Mais l'exemple donné ici ne se limite pas qu'au lancement de script. L'usage du ./ peut se présenter partout où un nom de fichier est donné comme paramètre à une commande et il n'est alors pas impossible d'avoir à faire à des fichiers commençant par un «-».
Et puis, il y a l'option "--", supportée par nombre de commandes, qui indique que ce qui suit n'est pas à interpréter comme une option même si ça commence par "-" :
Sous Linux et pour les commandes de bases, oui, tout à fait. Sous d'autres unix pas toujours. Pour les commandes ne le supportant pas, le problème se pose alors. C'est un sujet sur les shells qui revient assez souvent sur fr.comp.os.unix et les deux solutions qui sont alors données sont celle que tu viens d'évoquer et alternativement celle que j'ai soulevé. -- ou ./
-- TiChou
Dans le message <news:dlkgip$20tv$1@biggoron.nerim.net>,
*Pascal@plouf* tapota sur f.c.o.l.configuration :
$ sh ./-i
Hello world !
$ file ./-i
./-i: Bourne shell script text executable
Toujours aussi taquin hein ?
:-P
Je doute que préfixer par un "-" le nom d'un fichier et à plus forte
raison d'un script ou exécutable fasse partie des bonnes pratiques.
Certes. Mais l'exemple donné ici ne se limite pas qu'au lancement de script.
L'usage du ./ peut se présenter partout où un nom de fichier est donné comme
paramètre à une commande et il n'est alors pas impossible d'avoir à faire à
des fichiers commençant par un «-».
Et puis, il y a l'option "--", supportée par nombre de commandes, qui
indique que ce qui suit n'est pas à interpréter comme une option même si
ça commence par "-" :
Sous Linux et pour les commandes de bases, oui, tout à fait. Sous d'autres
unix pas toujours. Pour les commandes ne le supportant pas, le problème se
pose alors.
C'est un sujet sur les shells qui revient assez souvent sur fr.comp.os.unix
et les deux solutions qui sont alors données sont celle que tu viens
d'évoquer et alternativement celle que j'ai soulevé. -- ou ./
Dans le message <news:dlkgip$20tv$, ** tapota sur f.c.o.l.configuration :
$ sh ./-i Hello world ! $ file ./-i ./-i: Bourne shell script text executable
Toujours aussi taquin hein ?
:-P
Je doute que préfixer par un "-" le nom d'un fichier et à plus forte raison d'un script ou exécutable fasse partie des bonnes pratiques.
Certes. Mais l'exemple donné ici ne se limite pas qu'au lancement de script. L'usage du ./ peut se présenter partout où un nom de fichier est donné comme paramètre à une commande et il n'est alors pas impossible d'avoir à faire à des fichiers commençant par un «-».
Et puis, il y a l'option "--", supportée par nombre de commandes, qui indique que ce qui suit n'est pas à interpréter comme une option même si ça commence par "-" :
Sous Linux et pour les commandes de bases, oui, tout à fait. Sous d'autres unix pas toujours. Pour les commandes ne le supportant pas, le problème se pose alors. C'est un sujet sur les shells qui revient assez souvent sur fr.comp.os.unix et les deux solutions qui sont alors données sont celle que tu viens d'évoquer et alternativement celle que j'ai soulevé. -- ou ./