0

I created a directory dir at Desktop and then i keyed in cd dir so as to make dir as my current directory and then i typed in the terminal rmdir /home/user_name/Desktop/dir from the dir directory itself, and surprisingly this removed the dir directory but when i checked my current working directory using pwd it was still showing that i am in the dir directory,So my question is that how it is possible that i am working in a directory that has already been deleted.i am currently working on Ubuntu

  • Try and create a file in that directory and you will see it doesn't actually exist. Also if you do ls -la you will notice that . and .. no longer exist. I'm not sure what you expected to happen but to me this doesn't seem like an issue at all. Do you want it to kick you back a directory? Automagically move you to your home directory? Complain that you can't delete a directory that you are currently working from? I don't think any of those would be better or worse than the current behavior. – Jesse_b Dec 19 '18 at 18:46
  • my issue is that rmdir is simply deleting a directory(on which i am currently working) and it does not even give a error,you are absolutely right that no new file or directory can be made through this directory now but still on using pwd it is still showing a directory that actually do not exist in the file system – Noshiii Dec 19 '18 at 18:51
  • What are you suggesting should have happened? rmdir will only complain if the directory is non-empty. It's akin to deleting a file form the filesystem that a program is currently reading from or writing to. No issues. – Kusalananda Dec 19 '18 at 19:16
  • All of this, including the behaviour of pwd, is already covered at unix.stackexchange.com/questions/434417 . – JdeBP Dec 19 '18 at 19:21
3

If you want to understand why this is, you need to understand the difference between files and inodes. rm, rmdir and mv all take action on the inodes describing the file/directory, not the actual file. If you have a file/dir open (e.g. by being in the directory), the inode information is removed, but the actual data file associated with the file/dir is not removed until all file handles pointing to it are closed. So, when you "cd .." the filesystem can swoop in and remove the directory and all its contents.

https://en.wikipedia.org/wiki/Inode

http://www.grymoire.com/Unix/Inodes.html

  • that is the exact explanation that i wanted ,thank you so much – Noshiii Dec 19 '18 at 19:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.