Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

In this compilation of sysadmin horrors, one of the authors writes, as a rule of thumb:

Always do a cd . before doing anything.

Why would you want to do that?

share|improve this question
add comment

3 Answers 3

up vote 31 down vote accepted

You don't.

At least not just like that. The preceding line in the quoted document is of importance:

  • Set up your prompt to do a pwd everytime you cd.
  • Always do a cd . before doing anything.

This way, you as the operator verify your current working dir before doing anything of importance, as it's printed out with each change. cd . doesn't make any sense otherwise.

This "verification" is a good thing, and you should adapt a form of it. A more (IMHO) common variation of this theme is to always print out the working dir at the prompt.

share|improve this answer
11  
It is probably better to think of this as "always type 'pwd' before doing anything important to make sure you are in the directory you think you are" –  Rod MacPherson Jun 30 '13 at 16:03
4  
Why not just do a pwd before doing anything? –  Martin Konecny Jun 30 '13 at 18:30
14  
Actually, it does have a use. If you've gone into a directory via a symbolic link, and the link then gets deleted and re-created elsewhere, such as during a server deployment where versions are controlled with a symlink to "current_release", then doing cd . would change the actual underlying directory that you are in. –  Stewart Jun 30 '13 at 20:05
1  
+1 for "always print out the working dir at the prompt." That is what I do. –  Paddy Landau Jul 1 '13 at 11:04
4  
@Stewart Unfortunately this won't help if the symbolic link changes after cd . but before doing anything else. It just reduces the likelihood of being in the wrong directory, but doesn't solve the general problem. Unless you switch to the real directory using something like cd $(readlink -f .) given that you actually want to stay there. –  scai Jul 1 '13 at 12:42
add comment

If the current working directory of your shell is removed, it is possible to lose data.

For example,

$ pwd
/home/user/test
$ rmdir /home/user/test
$ pwd
/home/user/test
$ some_command | tee command.log
tee: command.log: No such file or directory
<long output>

The output of some_command was not written to the disk.

Typing cd . before running a command would reveal the problem.

$ pwd
/home/user/test
$ rmdir /home/user/test
$ cd .
$ pwd
.

If the current working directory directory was removed and re-created, typing cd . would "refresh" the reference to that directory.

$ ls
foo bar ljz
$ pwd
/home/user/test
$ rmdir /home/user/test
$ mkdir /home/user/test
$ pwd
/home/user/test
$ ls
$ cd .
$ ls 
foo bar ljz
share|improve this answer
add comment

I think it's more important to show your current directory.

On every linux server, I modify the prompt in /etc/bashrc by changing "W" to "w".

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

to

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \w]\\$ "

The effect of this is:

[root@xt include]#

versus

[root@xt /usr/src/spl-0.6.1/include]# 
share|improve this answer
    
is PS1 bash-specific? –  qdii Jun 30 '13 at 14:04
    
I think so... It's all I use. –  ewwhite Jun 30 '13 at 14:17
1  
Your changes might get lost with the next system upgrade, tho. –  ott-- Jun 30 '13 at 19:08
2  
@ott-- The stick it your ~/.profile or ~/.bash_profile as well as updating /etc/skel/.profile –  jscott Jun 30 '13 at 19:14
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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