为什么要运行cd。在做什么之前?


Answers:


32

你不知道

至少不仅如此。引用文件中的前一行很重要:

  • 设置您的提示以使pwd您每次都执行cd。
  • cd .在做任何事情之前,务必先做一个。

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

这种“验证”是一件好事,您应该修改它的一种形式。此主题的另一个(IMHO)常见变体是始终在提示时打印出工作目录。


11
最好将其视为“在进行重要操作以确保您位于自己认为的目录之前,始终键入'pwd'”
Rod MacPherson

4
为什么pwd不做任何事情就不做一个?
2013年

15
实际上,它确实有用。如果通过符号链接进入目录,然后将该链接删除并在其他位置重新创建,例如在服务器部署期间,其中将符号链接控制为“ current_release”,则这样做cd .会改变实际的基础您所在的目录
Stewart

1
+1表示“ 始终在提示时打印出工作目录”。那就是我所做的。
Paddy Landau

4
@Stewart不幸的是,如果符号链接执行其他操作之前之后更改 这将无济于事。它只是减少了进入错误目录的可能性,但不能解决一般问题。除非您使用类似给定的名称切换到真实目录,否则您实际上想呆在那里。cd .cd $(readlink -f .)
scai

18

如果外壳程序的当前工作目录已删除,则可能会丢失数据。

例如,

$ 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

13

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

在每台Linux服务器上,我都/etc/bashrc通过将“ 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]# 

PS1bash专用的吗?
qdii 2013年

我想是...这就是我用的。
ewwhite 2013年

1
下次系统升级可能会使您的更改丢失。
ott-- 2013年

2
@ ott--的贴到你~/.profile~/.bash_profile和更新/etc/skel/.profile
jscott
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.