aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorTim J. Robbins <tjr@FreeBSD.org>2002-06-01 02:14:48 +0000
committerTim J. Robbins <tjr@FreeBSD.org>2002-06-01 02:14:48 +0000
commit39dccc6f6dc964fbaa972ad9f10293e5c50fc6f2 (patch)
tree6f9f6a02deb0b4b48ec74ae2dd4e3547dde24eca /bin
parentf63d6dbfc9ededfdfe755a1138535aab20554d55 (diff)
downloadsrc-39dccc6f6dc964fbaa972ad9f10293e5c50fc6f2.tar.gz
src-39dccc6f6dc964fbaa972ad9f10293e5c50fc6f2.zip
Implement $PPID, the parent process ID of the shell.
Notes
Notes: svn path=/head/; revision=97689
Diffstat (limited to 'bin')
-rw-r--r--bin/sh/var.c8
-rw-r--r--bin/sh/var.h1
2 files changed, 9 insertions, 0 deletions
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