Bob Proulx wrote:
> Jochen Spieker wrote:
> > Bob Proulx:
> > > Having a literal '~/' in there works for bash. But it doesn't work
> > > for /bin/sh linked to dash for example.
> >
> > Works here:
> >
> > $ exec /bin/dash
> > $ cd /
> > $ pwd
> > /
> > $ cd ~
> > $ pwd
> > /home/jrschulz
>
> But that doesn't have anything to do with PATH. You didn't test PATH
> containing "~/" in it. You tested cd with "~" as an option argument.
> Those are different things.
>
> If you want to test PATH with "~/" in it then here is a test for it.
> It must be two process layers deep. It must launch a non-bash process
> which itself launches a process. It must not be a bash script.
Silly me! Here is an even simpler test.
$ mkdir -p $HOME/bin
$ cat >$HOME/bin/pathtrial1 <<\EOF
#!/bin/sh
echo hello from pathtrial1
EOF
$ chmod a+x $HOME/bin/pathtrial1
$ pathtrial1
hello from pathtrial1
That sets up the test as before. Then simply start up dash with that PATH.
I use 'env' here as the portable way to invoke a command with a
specified environment but avoiding shell aliases and so forth and
regardless of your shell being csh or some such.
$ env PATH='~/bin:/usr/bin:/bin' /bin/dash
Then try calling programs from $HOME/bin. They won't be found.
$ pathtrial1
/bin/dash: 1: pathtrial1: not found
$ echo $PATH
~/bin:/usr/bin:/bin
Bob