为什么在做任何事情之前都要运行 cd . ?

为什么在做任何事情之前都要运行 cd . ?

这是系统管理员恐怖事件的汇编其中一位作者写道,根据经验法则:

cd .做任何事情之前,一定要先做a 。

你为什么想这么做?

答案1

你不知道。

至少不是这样。引用文件中的上一行很重要:

  • 设置pwd每次执行 cd 时的提示。
  • cd .做任何事情之前,一定要先做a 。

这样,您作为操作员在执行任何重要操作之前都可以验证当前的工作目录,因为每次更改时都会打印出来。cd .否则就没有任何意义。

这种“验证”是件好事,你应该采用一种形式。这个主题更常见的变体是总是在提示符下打印出工作目录。

答案2

如果删除了 shell 的当前工作目录,则可能会丢失数据。

例如,

$ 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>

的输出some_command未写入磁盘。

在运行命令之前输入内容cd .就会发现问题。

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

如果当前工作目录被删除并重新创建,则键入cd .将“刷新”对该目录的引用。

$ 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

答案3

我认为显示当前目录更为重要。

/etc/bashrc在每个 Linux 服务器上,我通过将“W”改为“w”来修改提示符。

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

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

这样做的效果是:

[root@xt include]#

相对

[root@xt /usr/src/spl-0.6.1/include]# 

相关内容