PWD is considered local in /bin/ksh while it is global in most other shells
(ksh93, csh, bash, zsh).

In practice, it means calling getenv("PWD") from a child process returns NULL
on ksh (and pdksh) unless you export it before hand.

I discovered this while using getenv("PWD") to get the parent shell's current
path without resolved symlinks. It worked everywhere except on my OpenBSD
machines.

I don't mind putting export PWD in my kshrc but is there a reason why it
couldn't be a default?

-b


Index: main.c
===================================================================
RCS file: /cvs/src/bin/ksh/main.c,v
retrieving revision 1.52
diff -p -u -r1.52 main.c
--- main.c      15 Jun 2013 17:25:19 -0000      1.52
+++ main.c      21 Jul 2013 19:10:02 -0000
@@ -31,7 +31,7 @@ static const char initsubs[] = "${PS2=> 
 
 static const char *initcoms [] = {
        "typeset", "-r", "KSH_VERSION", NULL,
-       "typeset", "-x", "SHELL", "PATH", "HOME", NULL,
+       "typeset", "-x", "SHELL", "PATH", "HOME", "PWD", NULL,
        "typeset", "-i", "PPID", NULL,
        "typeset", "-i", "OPTIND=1", NULL,
        "eval", "typeset -i RANDOM MAILCHECK=\"${MAILCHECK-600}\" 
SECONDS=\"${SECONDS-0}\" TMOUT=\"${TMOUT-0}\"", NULL,

Reply via email to