From owner-freebsd-newbies Mon May 17 15:35:48 1999 Delivered-To: freebsd-newbies@freebsd.org Received: from pau-amma.whistle.com (s205m64.whistle.com [207.76.205.64]) by hub.freebsd.org (Postfix) with ESMTP id 4A8A214FD4 for ; Mon, 17 May 1999 15:35:46 -0700 (PDT) (envelope-from dhw@whistle.com) Received: (from dhw@localhost) by pau-amma.whistle.com (8.9.2/8.9.2) id PAA20947 for freebsd-newbies@FreeBSD.ORG; Mon, 17 May 1999 15:35:45 -0700 (PDT) Date: Mon, 17 May 1999 15:35:45 -0700 (PDT) From: David Wolfskill Message-Id: <199905172235.PAA20947@pau-amma.whistle.com> Subject: Re: Newbie tip Cc: freebsd-newbies@FreeBSD.ORG In-Reply-To: Sender: owner-freebsd-newbies@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org >Date: Sun, 16 May 1999 22:01:21 +0200 (CEST) >From: Adam Szilveszter >> >Caution: As many have said here already, don't change the root shell to >> >anything other from sh or csh because that's a really bad idea. >> Why is it a bad idea? In addition to other concerns, if one is using a network of machines under "sufficiently loose control", it may well happen that one's favorite shell isn't installed on at least one such machine. Further, unless the login shell is listed in /etc/shells, that will cause problems if you want to change your password or use FTP. (Actually, in our environment, the former concern is an issue for the NIS server(s), rather than the individual machines being used... which I found a little surprising. I noticed it when one of my colleagues, who uses bash, tried to change his password. And another colleague had trouble using "sudo" while using bash as his shell; that cleared up after he explicitly invoked "sh", then invoked "sudo".) One of the tricks I have taken to using to circumvent much of this is to use /bin/csh as my "login shell"... but in ~/.cshrc, I cobbled up some code that "execs" tcsh if it can be found (and if it's not already running -- that part gets a little tricky). That way, I can use FTP, change my password, and login to various machines without being worried that my login shell won't be found, while still taking advantage of tcsh when it's available. The logic in question looks like: # Try to short-circuit some gunk. Only exec tcsh if interactive; bail if # doing a "which". if ( $?prompt != 0 ) then if { test -z "$prompt" } exit if ( ! $?HOSTTYPE ) then set tcsh = `which tcsh` if ( $?tcsh && "${tcsh}" != "$SHELL" && { test -x ${tcsh} } ) then setenv SHELL "$tcsh" exec $tcsh endif endif endif Note: please do *not* just blindly use the above. I went ahead and posted it in case someone might find it worth tearing apart and understanding... and maybe improving. Cheers, david -- David Wolfskill UNIX System Administrator dhw@whistle.com voice: (650) 577-7158 pager: (650) 371-4621 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-newbies" in the body of the message