Ulrich Spoerlein <q(at)uni.de> wrote:
> On Wed, 12.01.2005 at 10:47:56 +0100, Oliver Fromme wrote:
> > > * wird schliesslich von der Shell expandiert, und dann knallts.
> >
> > Da echo ein Shell-builtin ist, wird exec*() gar nicht ver-
> > wendet, ergo spielt kern.argmax keine Rolle.
>
> Ja, aber ist echo denn _immer_ builtin? Bei jeder Shell?
Hm, das ist jetzt eine gute Frage. POSIX fordert nicht,
daß »echo« ein Builtin sein muß. Aber in der Praxis ist
es eigentlich immer einer. Ich kenne keine Bourne-Shell
unter irgendeinem UNIX, die kein echo eingebaut hat --
Kennst Du eine?
(Es wäre auch ziemlich blödsinnig von einem Software-De-
signer bzw. Programmierer, kein echo in der Shell zu im-
plementieren, denn es ist so ziemlich das am häufigsten
verwendete Kommando in Shell-Skripten. Jedesmal dafür
ein fork()+execve("/bin/echo")+wait() machen zu müssen,
wäre völlig bekloppt. Davon abgesehen ist es vermutlich
das am trivialsten zu implementierende Kommando überhaupt.)
Übrigens ist mir in einer vorhergehenden Mail eine kleine
Ungenauigkeit unterlaufen. »for« ist nicht etwa ein Shell-
builtin, sondern ein reserviertes Wort (ebenso wie while,
if, case usw.). Nichtsdestotrotz gilt das execve()-Limit
natürlich hierfür nicht, d.h. »for X in `ls`« ist sicher.
Gruß
Olli
-- Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München Any opinions expressed in this message may be personal to the author and may not necessarily reflect the opinions of secnetix in any way. Perl is worse than Python because people wanted it worse. -- Larry Wall To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Wed 12 Jan 2005 - 19:40:05 CET