何时在路径名中使用前面的斜杠?(例如“cd”命令)

Len*_*ers 4 command-line paths

我是一名新手用户,我正在尝试安装 Oracle Java。该过程要求我访问/usr/local/java,但这就是问题所在。我了解到/usr/local,那么这是我收到的消息:

\n\n
leonard@leonard-MT6452:/usr/local$ dir\nbin  etc  games  include  java  lib  man  sbin  share  src\n\nleonard@leonard-MT6452:/usr/local$ cd /java/\nbash: cd: /java/: No such file or directory\n\nleonard@leonard-MT6452:/usr/local$ rm -r ~/java\nrm: cannot remove \xe2\x80\x98/home/leonard/java\xe2\x80\x99: No such file or directory\n
Run Code Online (Sandbox Code Playgroud)\n\n

帮助?

\n

mur*_*uru 6

有两种方法可以指定路径。

绝对路径

绝对路径始终以/. 这意味着路径规范的起点是固定的。无论您当前的位置在哪里,绝对路径都将始终指向同一位置。唯一的例外是当您~在开始时使用 shell 快捷方式(例如 )时,shell 将替换~为通常是主目录的绝对路径。尽管它看起来不像~/bin以 a 开头/,但当 shell 呈现其最终形式时,它将有一个前导/

相对路径

相对路径永远不会以 开头/。它们的起点是当前目录,因此最终的位置取决于开始的位置。它们可以从任何子目录开始。此外:

  • 您可以使用...来引用当前目录和父目录。您还可以绝对路径中使用它们,只是不在开头(/foo/../bar与 相同/bar,并且都是绝对路径,但../foo不是绝对路径)。
  • 您可以使用名为(通常未设置)的设置(环境变量)CDPATH,专门用于该cd命令。如果将目录添加到CDPATH,则可以从任何带有 的地方使用相对路径(不以.或开头) 。..cd

总结一下:

  • cd /usr/local/java总是会带你去同一个地方,就像 一样cd /usr/local/./java
  • cd java根据您所在的位置和CDPATH包含的内容,将带您去不同的地方。(请注意,对于其他命令, onlycd应该受 - 影响,并且应该表示相同的意思。)CDPATH./javajava
  • cd ./javajava将带您到当前目录中指定的目录。
  • cd ../javajava将带您到父目录中指定的目录。
  • cd ~/javajava将始终带您到主目录中指定的目录。在本例中,路径是绝对路径,但由于 shell 扩展了之前~对其cd进行的操作,因此不同的用户将最终到达不同的位置。