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

何时在路径名中使用前斜杠?(例如 '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

帮助?

答案1

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

绝对路径

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

相对路径

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

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

总结一下:

  • cd /usr/local/java将始终带您到同一地点,就像 一样cd /usr/local/./java
  • cd java根据您所在的位置和所包含的内容,将带您到不同的地方。(请注意,对于其他命令,CDPATH只有-cd才会受到影响,并且应该意味着相同的事情。)CDPATH./javajava
  • cd ./javajava将带您进入当前目录中指定的目录。
  • cd ../javajava将带您进入父目录中命名的目录。
  • cd ~/java始终会将您带到java主目录中指定的目录。在这种情况下,路径是绝对路径,但由于 shell在对其进行操作~之前会扩展cd它,因此不同的用户最终会到达不同的位置。

答案2

您不需要在开始/时使用 while at/usr/local/来转到/usr/local/java。使用相对路径名的正确命令是:

leonard@leonard-MT6452:/usr/local$ cd java/
leonard@leonard-MT6452:/usr/local/java$ pwd
/usr/local/java    

bash_completion您也可以通过输入来获取帮助cd j(假设没有其他以 开头的目录j),然后点击Tabcd java/就会打印出来。

此外,您还可以在任何地方使用绝对路径:

cd /usr/local/java

/文件路径开头的总是指向文件的根目录文件系统层次结构。由于没有名为的文件,因此/java您收到/java/: No such file or directory错误消息。

相关内容