这些命令之间有什么区别:我cd $HOME/directory/test/
在运行每一行之前使用了:
cd ~
cd /
cd ~/
cd -
cd --
cd /.
cd $HOME
cd $USR
cd
所有这些都执行相同的行为。 有什么区别?
答案1
cd <dir>
将目录更改为的简单命令<dir>
。
~
表示$HOME
目录/
表示根目录~/
也表示$HOME
目录。唯一的区别是它明确地表明它是一个目录(尾部斜杠)。cd ~/
和cd
和cd ~
和cd $HOME
都做同样的事情。cd -
将工作目录更改为以前的工作目录。
这些特殊符号“。”(点)和“.。”(点点)【相关参数】:
“.”符号表示当前目录,“..”符号表示当前目录的父目录。
$USER
并且$HOME
环境变量
$USER
= 当前登录用户的名称。此变量由系统设置。您可能不应该手动更改其值。(例如:myuser1)
$HOME
= 当前登录用户的主目录的位置。(例如:/home/myuser1)
建议使用cd "$HOME"
或在有空格cd "$USER"
等cd
的情况下获得正确的输入。
答案2
cd ~
更改您的主目录。~
路径开头的缩写表示“用户的主目录”。
cd /
更改为根目录/
。这里没有什么特别的事情发生。
cd ~/
尾随/
没有任何区别。它强制~
将其解释为目录,但cd
无论如何都会这样做。(尾随/
会对指向目录的符号链接产生影响 - 比较ls -ld /var/spool/mail
和ls -ld /var/spool/mail/
。)
cd -
切换到上一个命令之前所在的目录cd
。这是该命令的一个特例cd
:当其参数为 时-
,它会执行此操作。
cd --
对于大多数命令(包括)cd
,参数--
意味着后面的任何内容都将被视为操作数而不是选项。例如,cd -- -P
表示更改为名为的目录-P
,而cd -P
传递-P
选项(如果您更改为的路径通过符号链接,则会产生差异)。当后面没有参数时--
,--
不会执行任何操作;此命令相当于普通的cd
. cd
,而没有参数,反过来,它是 的快捷方式cd ~
。
cd /.
相当于cd /
,因为/.
与 是同一个目录/
(.
单独使用时非常有用,表示“当前目录”)。
cd $HOME
更改您的主目录。如果主目录的路径包含空格或其他字符,此操作将失败。始终使用双引号括住变量替换:cd "$HOME"
。
cd $USR
最有可能的是,这什么都不做,因为USR
你的 shell 中没有定义名为的变量,因此运行的命令只是cd
。