From: "Morten Liebach" <none@m--mongers.org.lh.bsd-dk.dk> Date: Thu, 30 Jan 2003 13:28:51 +0100 To: bsd-novice@bsd-dk.dk Subject: Re: Skift shell
On 2003-01-29 22:20:05 +0100, Simon wrote:
> Torben Sørensen wrote:
>
> >Hej folks
> >
> >Hvordan skifter jeg shell (fra sh til tcsh)?
> >Kan man skifte shell for alle brugere på en gang??
> >
> man chsh
> 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
eller (virker ikke med alle sed(1) udgaver, virker på FreeBSD)
sed -i .bak 's!:/bin/sh$!:/bin/tcsh!' /etc/passwd
ville gøre det du havde tænkt dig. Check sed(1) for hvad der sker.
Men hov, det virker stadig ikke! Hvis du virkelig vil scripte tingene
på den måde så skal der nu køres pwd_mkdb(8) for at det virker som det
var meningen. Og hvad hvis der nu er nogle system bruger accounts der
helst skal have /bin/sh som shell fordi der kan være scripts der er
afhængige af det?
Pas på.
Måden jeg ville løse det på er at den enkelte bruger bruger chsh(1),
eller at root bruger vipw, og fra vi(1) udfører kommandoen:
:%s/:\/bin\/sh$/:\/bin\/tcsh/c
Den vil prompte for hver substitution, så kan man tage individuelt
stilling.
Derefter rettes scripts/configfiler til så nye brugere oprettes med
/bin/tcsh som shell, se adduser(8) og pw(8).
Håber det løste problemet, og at nogen lærte noget. :)
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