From owner-freebsd-questions Fri Aug 21 12:54:48 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id MAA22574 for freebsd-questions-outgoing; Fri, 21 Aug 1998 12:54:48 -0700 (PDT) (envelope-from owner-freebsd-questions@FreeBSD.ORG) Received: from lucy.bedford.net (lucy.bedford.net [206.99.145.54]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id MAA22565 for ; Fri, 21 Aug 1998 12:54:45 -0700 (PDT) (envelope-from listread@lucy.bedford.net) Received: (from listread@localhost) by lucy.bedford.net (8.8.8/8.8.8) id PAA29879; Fri, 21 Aug 1998 15:34:36 -0400 (EDT) (envelope-from listread) Message-Id: <199808211934.PAA29879@lucy.bedford.net> Subject: Re: "clear" curiosity In-Reply-To: <35DDC102.CE22AD57@graphnet.com> from Roman Katsnelson at "Aug 21, 98 02:48:34 pm" To: romank@graphnet.com (Roman Katsnelson) Date: Fri, 21 Aug 1998 15:34:36 -0400 (EDT) Cc: freebsd-questions@FreeBSD.ORG X-no-archive: yes Reply-to: djv@bedford.net From: CyberPeasant X-Mailer: ELM [version 2.4ME+ PL38 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-freebsd-questions@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Roman Katsnelson wrote: > Hi, > > I did 'cat clear' recently, and saw that all it said was > > exec tput clear > > I noticed that when I just type that in at the command line, the result > is entirely different -- it logs me out, clears the screen and gives a > new login prompt. I like this a lot better than the regular "exit" or > "Ctrl-D" thing because it clears the screen first. These are my two > questions: > > 1) Why are the results different between the same commands in a shell > script and at the command line? > and Well, exec replaces the current program with the other one. (tput in this case.) If it's a shell script, (e.g. clear) exec replaces the sh running the script with tput. >From the command line, it replaces your login shell. > 2) How can I write a shell script that does the same thing? (I tried, > but, of course, it did exactly what 'clear' does). for reasons, see the preceding. Bash has a .bash_logout script, maybe other shells do. This is the sort of thing you need to do on a system where you are not rooted. Usually, a better way is to have getty clear the screen. Adding a "\f" to the login banner sequence in /etc/gettytab seems to do the trick. Before: default:\ :cb:ce:ck:lc:fd#1000:im=\r\nFreeBSD (%h) (%t)\r\n\r\n:sp#1200: After: default:\ :cb:ce:ck:lc:fd#1000:im=\f\r\nFreeBSD (%h) (%t)\r\n\r\n:sp#1200: Note that this will affect all getty'ed logins: console, serial lines. (But not telnet and rlogin. These can be dealt with as well, I think, but am too lazy to dig it out.) Maybe some terminal types will choke on the \f. Dave -- Confutatis maledictis, flammis acribus addictis. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message