script: no logging for non-interactive shells
cover script: no logging for non-interactive shells
Many people use script in their shell initialization files. It has some unwanted consequences, e. g. logging commands from cron (and starting them in a pseudo-terminal and interactive shell). It could also result in a seemingly hanging applications:
For example:
echo -e './script\nTERM=linux mutt' | \
at $(date -d "+1 minute 5 seconds" +%H:%M)
mutt will "hang" inside at, because it thinks that it is running in an interactive shell and waits for input.
That is why I wrote --interactive command line option. If it is set, script called from a non-interactive session will not log anything, just (optionally) execute -c argument and silently exit.
Note that similar behavior existed between f50473e and 3822032, but the new proposed behavior does not generate error.
Signature · 10 lines
Best Regards / S pozdravem, Stanislav Brabec software developer --------------------------------------------------------------------- SUSE LINUX, s. r. o. e-mail: [email protected] Lihovarská 1060/12 tel: +49 911 7405384547 190 00 Praha 9 fax: +420 284 084 001 Czech Republic http://www.suse.cz/ PGP: 830B 40D5 9E05 35D8 5E27 6FA3 717C 209F A04F CD76
Karel Zak
maintainerQuoted 10 lines · Stanislav Brabec
Many people use script in their shell initialization files. It has some unwanted consequences, e. g. logging commands from cron (and starting them in a pseudo-terminal and interactive shell). It could also result in a seemingly hanging applications:
For example:
echo -e './script\nTERM=linux mutt' | \
at $(date -d "+1 minute 5 seconds" +%H:%M)
Quoted 6 lines
mutt will "hang" inside at, because it thinks that it is running in an interactive shell and waits for input.
That is why I wrote --interactive command line option. If it is set, script called from a non-interactive session will not log anything, just (optionally) execute -c argument and silently exit.
Would be better to learn people to fix their shell initialization files to not call script(1) for non-interactive sessions?
Karel
Signature · 2 lines
Karel Zak <[email protected]> http://karelzak.blogspot.com
Quoted 2 lines · Karel Zak
Would be better to learn people to fix their shell initialization files to not call script(1) for non-interactive sessions?
It makes sense.
Quoted 1 line
From
8fff32e65399ae07f70e12568d4d5278725673a7Mon Sep 17 00:00:00 2001
From: Stanislav Brabec <[email protected]>
Date: Wed, 11 Feb 2015 15:02:10 +0100
Subject: [PATCH] script.1: Document behavior in non-interactive shells
And discourage users from such use.
--- term-utils/script.1 | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
term-utils/script.1 +20 -0
@@ -121,6 +121,26 @@ create garbage in the typescript file. .B script works best with commands that do not manipulate the screen, the results are meant to emulate a hardcopy terminal. +.PP +It is not recommended to run +.B script +in non-interactive shells. The inner shell of +.B script +is always interactive, and this could lead to unexpected results. If you use +.B script +in the shell initialization file (profile), you should use e. g. +.RS +.RE +.sp +.na +.RS +.nf +if test -t 0 ; then + script +fi +.fi +.RE +.PP .SH ENVIRONMENT The following environment variable is utilized by .BR script :
Signature · 14 lines
2.2.2 -- Best Regards / S pozdravem, Stanislav Brabec software developer --------------------------------------------------------------------- SUSE LINUX, s. r. o. e-mail: [email protected] Lihovarská 1060/12 tel: +49 911 7405384547 190 00 Praha 9 fax: +420 284 084 001 Czech Republic http://www.suse.cz/ PGP: 830B 40D5 9E05 35D8 5E27 6FA3 717C 209F A04F CD76
Quoted 1 line · Stanislav Brabec
Subject: [PATCH] script.1: Document behavior in non-interactive shells
Applied, thanks :-)
Signature · 2 lines
Karel Zak <[email protected]> http://karelzak.blogspot.com