何时在路径名中使用前面的斜杠? (例如’cd’命令)
我是新手用户,我正在尝试安装Oracle Java。 这个过程要求我访问/usr/local/java
,但这是问题所在。 我得到/usr/local
,然后这是我得到的消息:
leonard@leonard-MT6452:/usr/local$ dir bin etc games include java lib man sbin share src leonard@leonard-MT6452:/usr/local$ cd /java/ bash: cd: /java/: No such file or directory leonard@leonard-MT6452:/usr/local$ rm -r ~/java rm: cannot remove '/home/leonard/java': No such file or directory
救命?
你不需要初始/
在/usr/local/
去/usr/local/java
。 使用相对路径名的正确命令:
leonard@leonard-MT6452:/usr/local$ cd java/ leonard@leonard-MT6452:/usr/local/java$ pwd /usr/local/java
你也可以通过输入cd j
来bash_completion
的帮助(假设没有其他目录以j
开头)然后点击Tab ,将打印cd java/
。
此外,您可以使用任何地方的绝对路径:
cd /usr/local/java
文件路径开头的/
始终引用文件系统层次结构的根目录。 因为没有名为/java
文件,你得到/java/: No such file or directory
错误消息。
可以通过两种方式指定路径。
绝对路径
绝对路径始终以/
开头。 这意味着路径规范的起点是固定的。 无论您当前的位置在哪里,绝对路径始终指向相同的位置。 唯一的例外是在开始时使用shell快捷方式,例如~
,shell将替换~
通常是主目录的绝对路径。 即使它看起来不像~/bin
以~/bin
开头,当shell呈现其最终forms时,它将具有前导/
。
相对路径
相对路径永远不会以/
开头。 他们的起点是当前目录,所以你最终取决于你的起点。 它们可以从任何子目录开始。 此外:
- 你可以用
.
和..
引用当前目录和父目录。 您也可以在绝对路径中使用它们,而不是在开头(/foo/../bar
与/bar
相同,两者都是绝对路径,但../foo
不是绝对路径)。 - 您可以使用名为
CDPATH
(通常未设置)的设置(环境变量),特别是cd
命令。 如果将目录添加到CDPATH
,则可以使用cd
从任何位置使用相对路径(不以.
或..
开头)。
总结一下:
-
cd /usr/local/java
总会带你到同一个地方,就像cd /usr/local/./java
。 -
cd java
将根据您的位置和CDPATH
包含的内容将您带到不同的位置。 (请注意,只有cd
应受CDPATH
影响 – 对于其他命令,./java
/java
和java
应该是相同的。) -
cd ./java
将带您进入当前目录中名为java
的目录。 -
cd ../java
将带您进入父目录中名为java
的目录。 -
cd ~/java
将始终将您带到主目录中名为java
的目录。 在这种情况下,路径是绝对的,但是因为shell在cd
操作之前扩展了~
,所以不同的用户将在不同的地方结束。