diff --git a/bin/sh/var.c b/bin/sh/var.c index 297b82b626e3..42c240cf6789 100644 --- a/bin/sh/var.c +++ b/bin/sh/var.c @@ -91,6 +91,7 @@ struct var vifs; struct var vmail; struct var vmpath; struct var vpath; +struct var vppid; struct var vps1; struct var vps2; struct var vvers; @@ -116,6 +117,8 @@ const struct varinit varinit[] = { NULL }, { &vpath, VSTRFIXED|VTEXTFIXED, "PATH=/bin:/usr/bin", changepath }, + { &vppid, VSTRFIXED|VTEXTFIXED|VUNSET, "PPID=", + NULL }, /* * vps1 depends on uid */ @@ -165,6 +168,7 @@ INIT { void initvar(void) { + char ppid[20]; const struct varinit *ip; struct var *vp; struct var **vpp; @@ -189,6 +193,10 @@ initvar(void) vps1.text = geteuid() ? "PS1=$ " : "PS1=# "; vps1.flags = VSTRFIXED|VTEXTFIXED; } + if ((vppid.flags & VEXPORT) == 0) { + fmtstr(ppid, sizeof(ppid), "%d", (int)getppid()); + setvarsafe("PPID", ppid, 0); + } } /* diff --git a/bin/sh/var.h b/bin/sh/var.h index 0718a2503ae4..4177599e4575 100644 --- a/bin/sh/var.h +++ b/bin/sh/var.h @@ -78,6 +78,7 @@ extern struct var vifs; extern struct var vmail; extern struct var vmpath; extern struct var vpath; +extern struct var vppid; extern struct var vps1; extern struct var vps2; #if ATTY