这只是一个词汇问题,但它一直在我的脑海中盘旋。
它来自LPIC准备书中的练习考试。根据这本书的正确答案是这~/Documents
是一个相对目录,因为它是相对于主目录的。
然而,这本书包含的错别字和错误比例很高,所以我不能认为那里写的所有东西都是理所当然的。在这里我不同意,因为对我来说,~
它充当了由 shell 扩展为变量内容$HOME
或当前用户主目录路径(参见man bash
)的变量,因此实际路径/home/myuser/Documents
确实是绝对目录。
甚至Wikipedia一次,在这个话题上对我来说似乎也没有帮助(即使它似乎证实这本书在这个问题上是错误的):
无论当前工作目录如何,绝对路径或完整路径都指向文件系统中的相同位置。为此,它必须包含根目录。
相比之下,相对路径从某个给定的工作目录开始,无需提供完整的绝对路径。
在这里,我再次不同意:根据这个定义,/opt/kde3/bin/../lib
不依赖于当前工作目录的路径应该是绝对路径,但是我目前对此的理解与本书作者将这条路径设为相对路径相符。
根据韦伯斯特词典,快速的网络搜索只会增加我的挫败感:
绝对路径- 相对于根目录的路径。它的第一个字符必须是路径名分隔符。
那么$HOME/Documents
,甚至$HOME
不会被视为绝对目录?或者这个定义是否意味着变量扩展?贝壳的~
性格呢?我可以在某处找到相对目录与绝对目录的任何可靠定义,并且我一直都错了吗?
Kev*_*eid 48
这本质上是一个关于术语定义的问题。因此,就您的目的而言,答案是 LPIC 想要的任何东西。但是我们可以根据技术事实得出一些结论:
如果你传递'~/Documents'
给一个系统调用,它会~
在当前目录中寻找一个完全命名的目录(并且可能会失败)。所以,根据内核使用的路径名的概念,这是一个相对路径——但这不是我们的意思。
~
是由外壳程序(以及为方便起见模仿它的其他程序)实现的语法,它将其扩展为真正的路径名。为了说明,~/Documents
与$HOME/Documents
(再次,shell 语法)大致相同。既然$HOME
应该是绝对路径,那么的值 $HOME/Documents
也是绝对路径。但是文本$HOME/Documents
还是~/Documents
要被shell 展开才能成为我们所说的路径。
因此,如果我想精确和一致,我会说这~/Documents
是扩展为绝对路径的 shell-script 片段。
Pet*_*des 42
如果作者试图通过将文字字符串(没有外壳扩展)作为路径来抓住你,那么它就是一个相对路径 ( mkdir -p './~/Documents'
)。除此以外:
这是一个绝对路径,因为解析它不依赖于进程的当前工作目录。 相对路径总是意味着相对于进程的工作目录。或者在符号链接目标的情况下,相对于符号链接的位置。(gcc -> gcc-5.2
对比gcc -> /usr/bin/gcc-5.2
)。这对于 NFS 挂载和其他情况很重要,您可以通过不同的绝对路径访问相同的符号链接。例如
/net/tesla/home/peter/foo -> bar # always works from other machines
/net/tesla/home/peter/foo -> /home/peter/bar # references my home dir on the local machine, not tesla.
Run Code Online (Sandbox Code Playgroud)
Debian 有时会将符号链接安装到../../doc/whatever/whatever
,而不是绝对符号链接目标,因此当 NFS 安装在其他地方时,或者在查看 chroot 而不chroot(8)
进入它时,它会起作用。
每个 Unix 进程都有自己的 cwd。该pwd
命令的存在只是为了打印它。
有关使用 POSIX 系统调用更改目录的更多信息,请参见:http : //pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html。
正如其他人所说,~
在路径用于任何事情之前由外壳扩展。使用~/bin/myprog
在shell脚本将使得针对不同用户的工作方式不同。~/bin/foo
和之间的区别在于/home/peter/bin/foo
,其中一个对位置进行了硬编码,而另一个对其进行了参数化。将~
版本称为相对路径是错误的(IMO)。
谈论“相对于环境变量”的事情只是令人困惑。在您使用它们的上下文中使用具有特定技术含义的术语的不同英语含义是不好的做法。
在损坏的系统上,使用HOME=a/relative/path
,~/foo
将扩展为相对路径。这根本不是一个可用的设置。
归档时间: |
|
查看次数: |
12405 次 |
最近记录: |