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.

9 réponses

1 2 3 4
Avatar
Jean-Louis Liagre
Stephane Chazelas wrote:
Path: news.free.fr!xref-2.proxad.net!spooler3-2.proxad.net!infeed-3.proxad.net!nnrp4-1.free.fr!not-for-mail
Newsgroups: fr.comp.os.unix
From: Stephane Chazelas
Subject: Re: execution de script C compile par gcc
References: <dr8a7n$gj8$ <43d7e8c8$0$393$ <43d81962$0$6686$ <43d8b7b7$0$22652$
Mail-Copies-To: nobody
Message-ID:
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-15
Content-Transfer-Encoding: 8bit
User-Agent: slrn/0.9.8.1 (SunOS)
Date: 26 Jan 2006 12:34:14 GMT
Lines: 25
Organization: Guest of ProXad - France
NNTP-Posting-Date: 26 Jan 2006 13:34:14 MET
NNTP-Posting-Host: 194.217.109.13
X-Trace: 1138278854 nnrp4-1.free.fr 15370 194.217.109.13:33934
X-Complaints-To:
Xref: news.free.fr fr.comp.os.unix:46648

On Thu, 26 Jan 2006 13:21:42 +0100, Jean-Louis Liagre wrote:
[...]
% cc -o test test.c
% test
%

« Pourquoi il ne m'affiche pas "Hello World !" ? »
Même si "." est dans le PATH, l'exemple ci dessus n'affichera

pas "Hello World !", une autre erreur classique de débutant ...


C'est parce que test est une builtin de bash, mais ce n'est pas
nécessairement le cas de tous les shells.
C'est une builtin dans le bourne shell et csh depuis au moins 20 ans,

et dans *tous* leurs descendants et clones, soit l'immense majorité des
shells utilisés aujourd'hui (sh, ksh, pdksh, bash, zsh, csh, tcsh, ...)


Non, il ne l'etait pas dans les premieres version du Bourne
shell


C'est bien ce que j'ai écrit.

et il ne l'est toujours pas dans csh ou tcsh.


$ csh
pcjll% type test
test is a shell builtin
pcjll% $
$ tcsh
type test
test is a shell builtin

exit
$


Il ne l'est
pas dans rc ou ses descendants non plus IIRC.


rc est un descendant/clone de sh/csh ?





Avatar
Stephane Chazelas
On Thu, 26 Jan 2006 17:09:16 +0100, Jean-Louis Liagre wrote:
[...]
et il ne l'est toujours pas dans csh ou tcsh.


$ csh
pcjll% type test
test is a shell builtin
pcjll% $
$ tcsh
type test
test is a shell builtin

exit
$



:)

"type" n'est pas une commande de csh. Tu dois avec un "type"
dans /usr/bin qui m'a tout l'ai d'etre un script sh ou ksh ou
bash. Donc, ca confirme que test est builtin de l'interpreteur
de /usr/bin/type, mais pas de csh.

Les expressions conditionnelles de csh, ne font pas appel a une
command, builtin ou pas.

Essaie "which test", plutot.

Ici sous Solaris:

$ tcsh
which type
/usr/bin/type

which which
which: shell built-in command.

which test
/usr/bin/test

file /usr/bin/type
/usr/bin/type: executable /bin/ksh script

file /usr/bin/test
/usr/bin/test: executable /bin/ksh script



Il ne l'est
pas dans rc ou ses descendants non plus IIRC.


rc est un descendant/clone de sh/csh ?


Non, c'est une troisieme branche, mieux concue. rc a plusieurs
descendants comme es ou akanga.

--
Stephane


Avatar
Harpo
Jean-Louis Liagre wrote:


$ csh
pcjll% type test
test is a shell builtin
pcjll% $
$ tcsh
type test
test is a shell builtin

exit
$



$ if /usr/bin/test -e /usr/bin/test ; then
echo Yep!
fi
Yep!

Il semble fonctionner, je n'ai pourtant pas fait le dernier upgrade il y
a 20 ans, il est dans le package Debian coreutils, peut-être est-il
utile.


Avatar
Jean-Louis Liagre
Stephane Chazelas wrote:
On Thu, 26 Jan 2006 17:09:16 +0100, Jean-Louis Liagre wrote:
[...]
et il ne l'est toujours pas dans csh ou tcsh.
$ csh

pcjll% type test
test is a shell builtin
pcjll% $
$ tcsh
type test
test is a shell builtin

exit
$



:)

"type" n'est pas une commande de csh. Tu dois avec un "type"
dans /usr/bin qui m'a tout l'ai d'etre un script sh ou ksh ou
bash. Donc, ca confirme que test est builtin de l'interpreteur
de /usr/bin/type, mais pas de csh.


Oops, en effet.

Les expressions conditionnelles de csh, ne font pas appel a une
command, builtin ou pas.

Essaie "which test", plutot.

Ici sous Solaris:

$ tcsh
which type
/usr/bin/type

which which
which: shell built-in command.

which test
/usr/bin/test

file /usr/bin/type
/usr/bin/type: executable /bin/ksh script

file /usr/bin/test
/usr/bin/test: executable /bin/ksh script



Je suis aussi sous Solaris, en fait 17 builtins
y ont une commande associée dans /usr/bin, qui
correspondent à un script unique (17 liens):

$ ls -li /usr/bin/type
242 -r-xr-xr-x 17 root bin 134 Nov 10 00:33 /usr/bin/type
$ find /usr/bin -inum 242
/usr/bin/alias
/usr/bin/bg
/usr/bin/cd
/usr/bin/command
/usr/bin/fc
/usr/bin/fg
/usr/bin/getopts
/usr/bin/hash
/usr/bin/jobs
/usr/bin/kill
/usr/bin/read
/usr/bin/test
/usr/bin/type
/usr/bin/ulimit
/usr/bin/umask
/usr/bin/unalias
/usr/bin/wait


Il ne l'est
pas dans rc ou ses descendants non plus IIRC.
rc est un descendant/clone de sh/csh ?



Non, c'est une troisieme branche, mieux concue. rc a plusieurs
descendants comme es ou akanga.


Jamais rencontré.



Avatar
Jean-Louis Liagre
Harpo wrote:

$ if /usr/bin/test -e /usr/bin/test ; then
echo Yep!
fi
Yep!

Il semble fonctionner, je n'ai pourtant pas fait le dernier upgrade il y
a 20 ans, il est dans le package Debian coreutils, peut-être est-il
utile.


Je n'ai jamais dit que la commande test avait *disparu* il y a 20 ans, mais
que la builtin test est *apparue* il y a au moins vingt ans.

Avatar
Stephane Chazelas
2006-01-26, 20:55(+01), Jean-Louis Liagre:
Harpo wrote:

$ if /usr/bin/test -e /usr/bin/test ; then
echo Yep!
fi
Yep!

Il semble fonctionner, je n'ai pourtant pas fait le dernier upgrade il y
a 20 ans, il est dans le package Debian coreutils, peut-être est-il
utile.


Je n'ai jamais dit que la commande test avait *disparu* il y a 20 ans, mais
que la builtin test est *apparue* il y a au moins vingt ans.


24 ans apparemment dans System 3 (novembre 1981)

http://www.in-ulm.de/~mascheck/bourne/
http://www.levenez.com/unix/

--
Stéphane


Avatar
Harpo
Jean-Louis Liagre wrote:

Harpo wrote:

$ if /usr/bin/test -e /usr/bin/test ; then
echo Yep!
fi
Yep!

Il semble fonctionner, je n'ai pourtant pas fait le dernier upgrade
il y a 20 ans, il est dans le package Debian coreutils, peut-être
est-il utile.


Je n'ai jamais dit que la commande test avait *disparu* il y a 20 ans,
mais que la builtin test est *apparue* il y a au moins vingt ans.


C'était poir la polémique.
Je ne savais pas c'était si vieux... Il ne doit plus y avoir de shell
qui n'ont pas test en builtin, /usr/bin/test peut être utilisé par
ailleurs, par exemple dans des commandes comme find.


Avatar
jean-yves LENHOF
Le Wed, 25 Jan 2006 17:49:21 +0000, Stephane Chazelas a écrit :

On Wed, 25 Jan 2006 18:16:47 +0100, deub wrote:
[...]
export PATH="${PATH}:."


Je ne vois pas trop en quoi c'est dangereux.
Le '.' étant placé à la fin, si je tape ls, c'est bien le bon ls qui sera
exécuté et pas un éventuel ls présent dans mon répertoire courant.


Sauf qu'un "sl" dans /tmp finira par attrapper quelqu'un qui est
un peu dyslexique ou a les doigts potelés.


Allez juste pour la petite histoire... un peu comme certains mans cachés
dans certains systèmes...

Il existe un programme sl... justement pour les dyslexiques qui affiche un
train qui passe...

Extrait du man :

NAME
sl - display animations aimed to correct users who accidentally enter
sl instead of ls.

SYNOPSIS
sl [ -alFe ]

DESCRIPTION
sl Displays animations aimed to correct users who accidentally enter sl
instead of ls.


A+



Avatar
Christophe Gaubert
Le 03/02/06, jean-yves LENHOF

Il existe un programme sl... justement pour les dyslexiques qui
affiche un train qui passe...


Marrant :)
Mais, euh, comment on fait pour arrêter ?


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

1 2 3 4