execution de script C compilé par gcc

Le
Charles S.
Bonjour,

avec Solaris l'executable se lance simplement en tapant son nom tant que
je suis dans le repertoire courant.
Avec Ubuntu j'ai le message d'erreur suivant : "bash:a.out:commande not
found". Je comprends que l'executable n'est pas recherché dans le
repertoire courant mais dans la liste des commandes de bash. Si c'est ça
pourquoi et comment y remedier autrement qu'en tapant './a.out' pour que
la recherche soit faite dans le repertoire courant?
Merci de votre aide.
--

Charles S.
Vos réponses Page 1 / 4
Trier par : date / pertinence
Targeur fou
Le #666871
Charles S. wrote:
Bonjour,


Bonjour,


avec Solaris l'executable se lance simplement en tapant son nom tant que
je suis dans le repertoire courant.
Avec Ubuntu j'ai le message d'erreur suivant : "bash:a.out:commande not
found". Je comprends que l'executable n'est pas recherché dans le
repertoire courant mais dans la liste des commandes de bash. Si c'est ça


Ben voilà, tu as trouvé...Ceci dit, c'est un question inhérente à
ton système, pas une question C.

pourquoi et comment y remedier autrement qu'en tapant './a.out' pour que
la recherche soit faite dans le repertoire courant?


Ajouter le répertoire où se situe ton exécutable à ta variable
d'environnement PATH via export ou setenv suivant ton système.

A+
Regis

Anthony Fleury
Le #666870
Bonjour,


Bonjour,

Avec Ubuntu j'ai le message d'erreur suivant : "bash:a.out:commande not
found". Je comprends que l'executable n'est pas recherché dans le
repertoire courant mais dans la liste des commandes de bash. Si c'est ça
pourquoi et comment y remedier autrement qu'en tapant './a.out' pour que
la recherche soit faite dans le repertoire courant?


Rien à voir avec le C en lui même, je mets donc le suivi sur
fr.comp.os.unix.

Il faut que le répertoire '.' soit dans le PATH pour que l'exécutable
soit cherché aussi dans le répertoire courant.
Voir getenv(3) et setenv(3) pour les y ajouter si besoin.

--
Anthony Fleury

Harpo
Le #666869
Charles S. wrote:

Bonjour,

avec Solaris l'executable se lance simplement en tapant son nom tant
que je suis dans le repertoire courant.
Avec Ubuntu j'ai le message d'erreur suivant : "bash:a.out:commande
not found". Je comprends que l'executable n'est pas recherché dans le
repertoire courant


Oui, sinon il l'aurait probablement trouvé.

mais dans la liste des commandes de bash.


Qu'est-ce ?

Si c'est
ça pourquoi et comment y remedier autrement qu'en tapant './a.out'


Il n'y a aucune raison d'y remédier autrement, et il y en a de bonnes
pour ne pas le faire.

pour que la recherche soit faite dans le repertoire courant?


Je pense qu'en mettant './' dans la variable d'environement PATH cela
pourrait marcher.
Voir même ça doit pouvoir se mettre dans /etc/bashrc ou quelque chose
comme ça, je ne pense pas que ce soit une bonne pratique.
Voir 'man bash'.
Je serais toi, je ne le ferais pas.

Merci de votre aide.


D'autant que cela n'a rien à voir avec fr.comp.lang.c.

--
http://harpo.free.fr/

Christophe Gaubert
Le #666867

Il faut que le répertoire '.' soit dans le PATH pour que l'exécutable
soit cherché aussi dans le répertoire courant.


C'est pas vraiment conseillé d'ajouter . au PATH. Enfin, si tu veux
vraiment le faire, tu peux ajouter une simple ligne à ~/.bashrc :
export PATH=$PATH:.

[au moins le mettre à la fin du PATH et pas au début...]


--
Christophe Gaubert
Mail posté depuis un système libre GNU/Linux

Charles S.
Le #666591
Le Mon, 23 Jan 2006 12:02:48 +0100, Charles S. a écrit :

Je remercie ceux qui m'ont répondu.

--

Charles S.
Pascal Bourguignon
Le #666589
"Charles S."
avec Solaris l'executable se lance simplement en tapant son nom tant que
je suis dans le repertoire courant.
Avec Ubuntu j'ai le message d'erreur suivant : "bash:a.out:commande not
found". Je comprends que l'executable n'est pas recherché dans le
repertoire courant mais dans la liste des commandes de bash. Si c'est ça
pourquoi et comment y remedier autrement qu'en tapant './a.out' pour que
la recherche soit faite dans le repertoire courant?


Les commandes sont recherchées dans les répertoires listés dans la
variable d'environnement PATH.

Il est dangereux de lister dans cette variable PATH le répertoire
courant, car si un utilisateur malveillant peut placer des programmes
de même nom que les commandes standards (ls, vi, ps, etc) dans des
répertoires où tu tapes ces commandes, tu risque d'exécuter pour ton
compte ces programmes malveillants au lieu des commandes normales.

Donc, si tu veux vivre dangereusement, tu peux ajouter le répertoire
courant au PATH en insérant la commande:

export PATH="${PATH}:."

dans ton ~/.bashrc, ou ~/.bash_profile ou ~/.profile


(Ça n'a rien à voir avec le système, mais avec la configuration de ton
environnement personnel).

--
__Pascal Bourguignon__ http://www.informatimago.com/
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d? s++:++ a+ C+++ UL++++ P--- L+++ E+++ W++ N+++ o-- K- w---
O- M++ V PS PE++ Y++ PGP t+ 5+ X++ R !tv b+++ DI++++ D++
G e+++ h+ r-- z?
------END GEEK CODE BLOCK------

Charles S.
Le #666587
Le Mon, 23 Jan 2006 14:54:37 +0100, Pascal Bourguignon a écrit :

Les commandes sont recherchées dans les répertoires listés dans la
variable d'environnement PATH.

Il est dangereux de lister dans cette variable PATH le répertoire
courant, car si un utilisateur malveillant peut placer des programmes
de même nom que les commandes standards (ls, vi, ps, etc) dans des
répertoires où tu tapes ces commandes, tu risque d'exécuter pour ton
compte ces programmes malveillants au lieu des commandes normales.

Donc, si tu veux vivre dangereusement, tu peux ajouter le répertoire
courant au PATH en insérant la commande:

export PATH="${PATH}:."

dans ton ~/.bashrc, ou ~/.bash_profile ou ~/.profile


(Ça n'a rien à voir avec le système, mais avec la configuration de ton
environnement personnel).


Merci beaucoup.
--

Charles S.

Emmanuel Delahaye
Le #666586
avec Solaris l'executable se lance simplement en tapant son nom tant que
je suis dans le repertoire courant.
Avec Ubuntu j'ai le message d'erreur suivant : "bash:a.out:commande not
found". Je comprends que l'executable n'est pas recherché dans le
repertoire courant mais dans la liste des commandes de bash. Si c'est ça
pourquoi et comment y remedier autrement qu'en tapant './a.out' pour que
la recherche soit faite dans le repertoire courant?


Ce n'est pas une question de langage C, mais de système. Merci de
reposer la question sur un forum Linux.

--
A+

Emmanuel Delahaye

Harpo
Le #666585
Emmanuel Delahaye wrote:

avec Solaris l'executable se lance simplement en tapant son nom tant
que je suis dans le repertoire courant.
Avec Ubuntu j'ai le message d'erreur suivant : "bash:a.out:commande
not found". Je comprends que l'executable n'est pas recherché dans le
repertoire courant mais dans la liste des commandes de bash. Si c'est
ça pourquoi et comment y remedier autrement qu'en tapant './a.out'
pour que la recherche soit faite dans le repertoire courant?


Ce n'est pas une question de langage C, mais de système. Merci de
reposer la question sur un forum Linux.


Non, l'honorable intervennt parle aussi de Solaris, cette question ne
peut être limitée à GNU/Linux, et comme un autre intervenant l'a
démontré avec brio, cela ne tient pas au système, mais plutôt à la
manière dont il est configuré.
Je suggère dinc de mettre aux voix le forum vers lequel doit être
redirigé ce fil.

--
http://harpo.free.fr/


Hamiral
Le #666582
Il est dangereux de lister dans cette variable PATH le répertoire
courant, car si un utilisateur malveillant peut placer des programmes
de même nom que les commandes standards (ls, vi, ps, etc) dans des
répertoires où tu tapes ces commandes, tu risque d'exécuter pour ton
compte ces programmes malveillants au lieu des commandes normales.


OUF !
J'ai cru que tout le monde allait lui dire de mettre . dans le PATH sans
penser à la raison pour laquelle il n'y est pas !

Pour info, l'exemple qui m'a été donné, c'est simplement un script ls
qui, au lieu de lister le répertoire, pourrait, par exemple, changer le
mot de passe de root en modifiant le /etc/passwd (extrêmement facile
pour qui connaît un peu la programmation shell). Placé judicieusement
dans le répertoire /tmp, le script n'avait plus qu'à attendre patiemment
que root vienne voir ce qui se trouve dans ce répertoire, fasse
simplement 'ls', et se trouve dépossédé de ses droits.

Terrifiant, non ?

La conclusion est donc : ne JAMAIS mettre . dans le path, et toujours
lancer les programme avec ./, tout simplement ...

--
Hamiral

Publicité
Poster une réponse
Anonyme