This is the mail archive of the
cygwin
mailing list for the Cygwin project.
RE: CD doesn't work in script
- From: "Buchbinder, Barry \(NIH/NIAID\) [E]" <BBuchbinder at niaid dot nih dot gov>
- To: "SCHLING" <schling at mail dot telepac dot pt>, <cygwin at cygwin dot com>
- Date: Thu, 3 May 2007 12:31:19 -0400
- Subject: RE: CD doesn't work in script
- References: <10307440.post@talk.nabble.com>
SCHLING wrote on Thursday, May 03, 2007 12:18 PM:
>
> I have successfully installed Cygwin on XP SP2, and would like to run
> a script which includes a change directory command (cd \etc.)
>
> All the other lines of the script work except the one with cd. The
> same line works when input by hand.
>
> Searching on the net I found that line endings could be critical (Lf
> instead of CrLf) and ran the script through d2u. Still no success.
>
> Curiously, if the script tries a cd with a non-existing directory, I
> get a warning. Otherwise, the script runs without any problems, but
> the active directory does not change.
>
> Don't know what to do next...
>
> Any help appreciated
>
> Robert
A script that starts with a #!/bin/sh or the like runs in a sub-shell,
i.e., its own process. (I'm assuming that what you are doing.) A "cd"
in the script changes the working directory of the sub-shell, not its
parent, the shell from which the sub-shell was launched. When the
script exits, one finds oneself in the original directory because the
command (parent) shell has not done a "cd".
What it seems you want to do is to *source* the script. In bash you can
do it at least two ways:
$ . script
$ source script
For convenience, you can set up a alias so that you don't have to
remember to type "." or "source".
alias script='. /path/script'
Y do not need to include the path if the names of the alias and script
are different.
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/