何时在路径名中使用前面的斜杠? (例如’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 jbash_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 / javajava应该是相同的。)
  • cd ./java将带您进入当前目录中名为java的目录。
  • cd ../java将带您进入父目录中名为java的目录。
  • cd ~/java将始终将您带到主目录中名为java的目录。 在这种情况下,路径是绝对的,但是因为shell在cd操作之前扩展了~ ,所以不同的用户将在不同的地方结束。