sh: Add set -o nolog.

POSIX requires this to prevent entering function definitions in history but
this implementation does nothing except retain the option's value. In ksh88,
function definitions were usually entered in the history file, even when
they came from ~/.profile and the $ENV file, to allow displaying their
definitions.

This is also the first option that does not have a letter.
This commit is contained in:
Jilles Tjoelker 2015-08-29 19:41:47 +00:00
parent c6cc7ec120
commit 62c3711632
4 changed files with 15 additions and 5 deletions

View File

@ -886,7 +886,7 @@ varvalue(const char *name, int quoted, int subtype, int flag)
num = backgndpidval();
break;
case '-':
for (i = 0 ; i < NOPTS ; i++) {
for (i = 0 ; i < NSHORTOPTS ; i++) {
if (optlist[i].val)
STPUTC(optlist[i].letter, expdest);
}

View File

@ -302,7 +302,7 @@ setoption(int flag, int val)
{
int i;
for (i = 0; i < NOPTS; i++)
for (i = 0; i < NSHORTOPTS; i++)
if (optlist[i].letter == flag) {
setoptionbyindex(i, val);
return;

View File

@ -64,8 +64,10 @@ struct shparam {
#define Tflag optlist[16].val
#define Pflag optlist[17].val
#define hflag optlist[18].val
#define nologflag optlist[19].val
#define NOPTS 19
#define NSHORTOPTS 19
#define NOPTS 20
struct optent {
const char *name;
@ -95,6 +97,7 @@ struct optent optlist[NOPTS] = {
{ "trapsasync", 'T', 0 },
{ "physical", 'P', 0 },
{ "trackall", 'h', 0 },
{ "nolog", '\0', 0 },
};
#endif

View File

@ -32,7 +32,7 @@
.\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95
.\" $FreeBSD$
.\"
.Dd July 11, 2015
.Dd August 29, 2015
.Dt SH 1
.Os
.Sh NAME
@ -343,6 +343,11 @@ Write each command
variable subjected to parameter expansion and arithmetic expansion)
to standard error before it is executed.
Useful for debugging.
.It nolog
Another do-nothing option for
.Tn POSIX
compliance.
It only has a long name.
.El
.Pp
The
@ -1173,7 +1178,9 @@ The only special parameter that can be made local is
.Ql - .
Making
.Ql -
local causes any shell options that are
local causes any shell options
(including those that only have long names)
that are
changed via the
.Ic set
command inside the function to be