Re: Skift shell

From: Morten Liebach (none@m--mongers.org.lh.bsd-dk.dk)
Date: Thu 30 Jan 2003 - 15:16:35 CET


From: "Morten Liebach" <none@m--mongers.org.lh.bsd-dk.dk>
Date: Thu, 30 Jan 2003 15:16:35 +0100
To: bsd-novice@bsd-dk.dk
Subject: Re: Skift shell

On 2003-01-30 14:14:44 +0100, Simon wrote:
> Morten Liebach wrote:
>
> >On 2003-01-29 22:20:05 +0100, Simon wrote:
> >
> >>cat /etc/passwd | sed 's!:/bin/sh$!:/bin/tcsh!' > /etc/passwd
> >>
> >Der er en "Useless Use of Cat Award" til dig. :)
> >Det skulle have været:
> >
> > sed 's!:/bin/sh$!:/bin/tcsh!' /etc/passwd > /etc/passwd
> >
> >Og det ville ikke virke. Du kan ikke lave in-place editing på den måde.
> >
> > sed 's!:/bin/sh$!:/bin/tcsh!' /etc/passwd > /etc/passwd.tmp && \
> > mv /etc/passwd.tmp /etc/passwd
> >
> Jeg kan se nogle sikkerhedsmæssige fordele i at bruge en midlertidig fil
> frem for at læse fra stdin, er der flere grunde til at min linje ikke
> burde virke over den sidst nævnte?

Hæ! ;)
Det er mere kompliceret end som så, kan jeg nu se. Jeg vil gætte på du
bruger bash. Den løsning du kom med virker med bash på Linux og zsh på
FreeBSD, men ikke tcsh og csh på FreeBSD (det er de shells jeg direkte
har kunnet teste).

Jeg troede ikke det virkede nogen steder, men det er nok et bourne vs.
c-shell issue. Bourne shells (eller i hvert fald zsh og bash) læser
hele filen med cat inden den trunkeres til 0 af '>', csh/tcsh åbner
outputfilen først, så når cat så skal til at læse input er der intet i
filen, og så står man uden /etc/master.passwd ...

> Siden sed læser en linje ad gangen er det nødvendigt at læse fra en
> anden kilde end fra filen direkte.
>
> Derudover skal du have tak for de yderligere rettelser, jeg er vist for
> vant til at Linux' nøjsomme måde at håndtere det på.
 
Som sagt, det er vist bourne vs. c-shell i dette tilfælde, men du har
ret i ovenstående mht. bourne shells, imens jeg gik ud fra c-shell
semantik.

> >Håber det løste problemet, og at nogen lærte noget. :)

Det gjorde jeg i hvert fald selv nu.

Med venlig hilsen
                                Morten

-- 
OpenPGP: 0xF1360CA9 -- 8CF5 32EE A5EC 36B2 4E3F  ACDF 6D86 BEB3 F136 0CA9
         Morten Liebach <none@m--mongers.org.lh.bsd-dk.dk> - http://m.mongers.org/



This archive was generated by hypermail 2b30 : Wed 15 Nov 2006 - 18:25:07 CET