stty: : Not a typewriter
Rex Fowler
rmfowler at texrex.uucp
Fri Mar 8 14:48:41 AEST 1991
In article <1991Mar7.130721.4475 at dms3b1.uucp> dave at dms3b1.UUCP (Dave Hanna) writes:
>In article <1496 at das13.snide.com> dave at das13.snide.com (Dave Snyder) writes:
>>= For example: when in vi, I like to read in the current date & time by typing
>>= "!!date". What that does is fork a shell, run date and the output of date is
>>= read into the buffer (see example below).
>>=
>>= Wed Mar 6 07:31:23 EST 1991
>
>>= Now for some strange reason, this is what I get when I type "!!date".
>
>>= stty: : Not a typewriter
>>= Wed Mar 6 07:38:47 EST 1991
>
>I've bumped into the same problem. It seems to come from the 'stty'
>statement in your .kshrc, which, I assume, is run everytime a new
>ksh is started. Apparently, the ksh is started with stdin being
>redirected somehow to come from the editor buffer, and so stty doesn't
>like it.
>
>I've gotten rid of it by adding "shell=/bin/sh" to my EXINIT environment
>variable. That causes sh instead of ksh to be used for any "!" actions.
>However, I'm not really satisfied with that solution, because sh doesn't
>understand "~/" notation, so I have to use $HOME (e.g., ":r $HOME/.signature")
>which is annoying.
>
Yuck...
And doesn't your mailer or poster add your .signature for you anyway?
>I'd be real interested if anybody has a better analysis and/or solution.
>
>>David A. Snyder @ Snide Inc. - Folcroft, PA
>
>
>--
>Dave Hanna, Infotouch Systems, Inc. | "Do or do not -- There is no try"
>P.O. Box 584, Bedford, TX 76095 | - Yoda
>(214) 358-4534 (817) 540-1524 |
>UUCP: ...!letni!dms3b1!dave |
The easy answer is:
:r !date
instead of
!!date
The right answer is:
No matter which shell you are using ksh/csh/sh, you should only execute
certain commands when you are starting an interactive shell.
In .kshrc you can do:
----------------------------------------------------------------
if [ -t 0 ] then
stty quit intr kill erase -noflsh ixon ixoff
any_other_commands_that_are_necessary_only_for_interactive_shells
fi
----------------------------------------------------------------
No manual handy, but i believe this tests to see if the shell is connected
to a tty. I grabbed this off a recent discussion in comp.unix.shell. Some
claimed it worked, some claimed it didn't. It works for me. There are similar
commands for other shells. I believe there was a more correct way posted
for ksh but I just went back to check and it must've already expired.
--
Rex Fowler <rmfowler%texrex at cirr.com>
UUCP: egsner!texrex!rmfowler
More information about the Comp.sys.3b1
mailing list