using cd command in a file

Rick Kelly rmk at rmkhome.UUCP
Wed May 29 23:58:00 AEST 1991


In article <1991May27.170005.12870 at xzaphod.uucp> michael at xzaphod.UUCP (Michael R. Miller) writes:
>In article <9105230900.22 at rmkhome.UUCP> rmk at rmkhome.UUCP (Rick Kelly) writes:
>>In article <1991May20.201923.27920 at garfield.ncat.edu> muquit at garfield.ncat.edu (MUHAMMAD A. MUQUIT) writes:
>>>In article <1991May20.155136.25162 at ux1.cso.uiuc.edu> Charles Blair writes:
>>>>
>>>>   I would like to get to a directory /me/A/B/C/D by just typing j.  I tried
>>>>creating a file j with cd /me/etc in it, then chmod +x j.  It didn't work.
>>>>Thanks in advance.  I'm sure I'm overlooking something well-known.
>>>
>>>You can do the job if you put this line in your .login file:
>>>     alias j 'cd /me/A/B/C/D'
>>>
>>>I'm also curious why your way didn't work.  I think  there're lots of gurus
>>>out there to answer this.
>>
>>A two line script would do it.
>>
>>#!/bin/sh
>>cd /me/A/B/C/D
>>
>>Then chmod +x scriptname.
>>
>>Rick Kelly	rmk at rmkhome.UUCP	frog!rmkhome!rmk	rmk at frog.UUCP
>
>A script won't work because "cd" is a "built in" command in every shell
>I've heard of.
>
>What happens when you run the script is your shell forks a copy of itself
>which then runs the commands in the script.  The CHILD shell does the "cd"
>command.  Then the CHILD shell exits.  The shell that "knew" about the
>directory change has disappeared along with the directory change itself.
>The parent process (shell) still has its working directory set as it was
>prior to your script running.  Nothing constructive has happened except
>another process has run and some files were opened and closed causing
>updates to buffers to possibly occur inside the kernel.
>
>A modification to the script command could be:
>
>#!/bin/sh
>exec $SHELL -c "cd /me/A/B/C/D"
>
>assuming the SHELL environment variable is set to the path to the default
>shell you want to use (eg. /bin/sh).  This is not the most efficient way
>of doing this.  If your shell supports aliases (/bin/ksh, /bin/csh,
>/bin/zsh), use it.

As I hit 's', I realised this.  I canceled from within rn, but it didn't
seem to work.  So I guess I will have to debug canceling articles. :-)

Rick Kelly	rmk at rmkhome.UUCP	frog!rmkhome!rmk	rmk at frog.UUCP



More information about the Comp.unix.questions mailing list