Is it possible to rename the current working directory from within a shell (Bash in my particular case)? If I attempt to do this the straightforward way, I end up with an error:
nathan@nathan-desktop:/tmp/test$ mv . test2
mv: cannot move ‘.’ to ‘test2’: Device or resource busy
Is there another way to do this without changing the current directory? I realize that I can easily accomplish this by changing to the parent directory, but I'm curious if this is necessary. After all, if I rename the directory from another shell, I can still create files in the original shell afterwards.
Best Answer
Yes, but you have to refer to the directory by name, not by using the
.
notation. You can use a relative path, it just has to end with something other than.
or..
:You can use an absolute path:
Similarly,
rmdir .
won't ever work, butrmdir "$PWD"
does.