Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

execution de script C compilé par gcc

39 réponses
Avatar
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.

10 réponses

1 2 3 4
Avatar
Targeur fou
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

Avatar
Anthony Fleury
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

Avatar
Harpo
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/

Avatar
Christophe Gaubert

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

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

Je remercie ceux qui m'ont répondu.

--

Charles S.
Avatar
Pascal Bourguignon
"Charles S." writes:
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------

Avatar
Charles S.
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.

Avatar
Emmanuel Delahaye
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

Avatar
Harpo
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/


Avatar
Hamiral
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

1 2 3 4