[PLUG] Shell script problem
श्रीधर नारायण दैठणकर
ghodechhap at ghodechhap.net
Sat Aug 4 12:38:37 IST 2007
On Saturday 04 Aug 2007 12:13:08 Sushant Bhadkamkar wrote:
> Hi all,
> Yesterday I was writing a simple script which when run, would create a
> directory with today's date and then would take you to the created
> dir.Atfirst I thought it will be easy but the 'finding yourself in the
> new
> directory after running the script' part didn't work out.The script I wrote
> is as follows:
>
> #!/bin/sh
> cd
> DIR=`date --iso`
> mkdir `date --iso`
> cd "$DIR"
>
> This did create a directory but I wasn't taken to it.After a bit of
> experimenting I found out that adding /bin/sh at the end (ie opening any
> subshell) does the work.
No it doesnt, at least not with the way you wanted. The shellscript is run in
child process. So after shell script exits, the current directory is back to
that of parent process i.e. from where you ran the script.
When you invoke the /bin/sh from the shell script, it starts a sub shell of
the shellscript and that being interactive, waits for user inputs. When you
exit this shell, the shellscript finishes.
> My question is why does the script work this way?Is there any other way to
> do this?
Run with the . i.e invoke the shellscript as '. ./dir.sh' and the shell script
is run in the current process. It should do what you want and you don't need
to invoke yet another shell from the script.
man bash for more details.
HTH
Shridhar
More information about the Plug-mail
mailing list