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