[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: *** GMX Spamverdacht *** Re: [Way OT] "#!/bin/bash" changes working directory



Hello,  
  
> --- Ursprüngliche Nachricht ---  
...  
>   
> That's how the script is right now.  I thought it would be nice to use  
> a few extra features of bash, changed the first line and found this  
> "change of directory" problem...  I thought it was funny, since in the  
> Linux machines (where I had that problem) /bin/sh is a link to  
> /bin/bash, so I was expecting to see no difference with the change...  
>   
  
/bin/sh exists for compatability with the legacy Bourne shell and does 
not provide bash-specific features. In APP 1 I had a ~bash_cmd_rc file 
with some output in the BASH_ENV, and it is ignored by /bin/sh, even 
if /bin/sh is a softlink to /bin/bash on my machine. 
 
Having a softlink or several softlinks to the same executable is quite a 
common pattern in Unix. Every binary can read the name under which it was 
executed and make decisions on that. You can also use that in 
shellscripts (APP 2) where the $0 contains the name of the script. 
 
Regards, 
Roland 
 
 
APP 1: 
===== 
roland@knoppix:/usr/local/home/roland_NEW$ BASH_ENV=~/.bash_cmd_rc bash  
-c 'echo MMMMMMMMMMMMMMMM'  
bash called ...  
UID        PID  PPID  C STIME TTY          TIME CMD  
roland    9658  9627  0 Jan05 pts/6    00:00:00 /bin/bash  
roland   10411  9658  0 00:22 pts/6    00:00:00 bash -c echo  
MMMMMMMMMMMMMMMM  
roland   10412 10411  0 00:22 pts/6    00:00:00 ps -f  
MMMMMMMMMMMMMMMM  
roland@knoppix:/usr/local/home/roland_NEW$ BASH_ENV=~/.bash_cmd_rc sh -c  
'echo MMMMMMMMMMMMMMMM'  
MMMMMMMMMMMMMMMM  
  
APP 2: 
===== 
foo.sh: 
#!/bin/sh 
 
echo I was invoked as $0 
 
if [ `basename $0` == "a" ] 
then 
      echo AAAAAAAAAAAAAAAAAAAA 
elsif [ `basename $0` == "b" ] 
      echo BBBBBBBBBBBBBBBBBBBBBBBBB 
else 
      echo Dont know 
fi 
  
$ ln -s foo.sh a 
$ ln -s foo.sh b 
 
roland@knoppix:/usr/local/home/roland_NEW$ ./a 
I was invoked as ./a 
AAAAAAAAAAAAAAAAAAAA 
roland@knoppix:/usr/local/home/roland_NEW$ ./b 
I was invoked as ./b 
BBBBBBBBBBBBBBBBBBBBBBBBB 
 
> Thanks!  
>   
> Luis  
>   
  

-- 
Lust, ein paar Euro nebenbei zu verdienen? Ohne Kosten, ohne Risiko!
Satte Provisionen für GMX Partner: http://www.gmx.net/de/go/partner



Reply to: