Skip to contentSkip to conversation

script: no logging for non-interactive shells

PATCH Applied Stanislav Brabec 2 participants 4 messages Feb 10, 2015 – Feb 12, 2015 Util-Linux package

lore
Share & tools
lore
#0 lore raw

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
maintainer
#1 lore raw
Quoted 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
#2 lore raw
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 8fff32e65399ae07f70e12568d4d5278725673a7 Mon 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
index 4573f07..f32030c 100644
@@ -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
maintainer Applied
#3 lore raw
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