chris@umcp-cs.UUCP (Chris Torek) (08/20/86)
In (I guess) <-932157@homer> someone writes: >>try this one: >> $ mkdir foo >> $ cd foo >> $ (cd ..; rmdir foo) >>then try >> $ pwd >> $ ls >> $ cd .. >>this is great fun! In article <236@bsdpkh.UUCP> latham@bsdpkh.UUCP (Ken Latham) writes: >..... NO it's SHELL !!!! > >these two are "BUGS" in shell not 'RMDIR' ( not technically though ) ---------------------- (I guess that this means `these two are not, technically speaking, bugs.') Indeed, these are not bugs in anything. Removing a directory involves erasing `.' and `..', then unlinking the directory: but unlinking any open file does not in fact get rid of it until it is closed; and the current directory of any process is effectively `open'. The `.' and `..' entries for `foo' above are indeed gone, but the (now entirely empty) directory continues to exist until you chdir out of it. `ls' and `pwd' are unable to open `.' (since it no longer exists), and `chdir' cannot find `..'; but `cd $HOME' works quite well. >When you remove the cwd from inside shell, you strand yourself there. Not at all: you may use any absolute path name. Only relative names fail; for relative names are dependent upon `.' and `..'. >Ksh does not have these problems. Some do not consider this a problem . . . ! (Ksh obviously cleverly translates `cd ..' into `well, I was in /usr/bar/foo, so I should go to /usr/bar'. The C shell does similar tricks at times. They are sometimes useful, sometimes annoying.) -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 1516) UUCP: seismo!umcp-cs!chris CSNet: chris@umcp-cs ARPA: chris@mimsy.umd.edu