这只是一个词汇问题,但一直在我脑海中回荡。
它来自LPIC准备书中的实践考试。根据这本书的正确答案~/Documents
是相对目录,因为它是相对于主目录的。
但是,这本书包含错别字和错误的比率很高,所以我不能认为那里写的一切都是理所当然的。在这里我并不同意,因为对我而言,它~
充当由Shell扩展为变量内容$HOME
或当前用户主目录路径(参见参考资料man bash
)的变量,因此实际路径/home/myuser/Documents
确实是绝对目录。
即使是Wikipedia,这一次对我似乎也无济于事(即使似乎确认这本书在这方面是错误的):
无论当前工作目录如何,绝对路径或完整路径都指向文件系统中的同一位置。为此,它必须包含根目录。
相反,相对路径从某些给定的工作目录开始,从而避免了提供完整的绝对路径。
再次重申,我不同意:根据此定义,/opt/kde3/bin/../lib
不依赖于当前工作目录的路径应该是绝对路径,但是我目前对此的理解与本书的作者相匹配,因此该路径是相对路径。
快速的Web搜索只是增加了我的无奈,根据韦氏词典:
绝对路径 -相对于根目录的路径。它的第一个字符必须是路径名分隔符。
那么$HOME/Documents
,甚至$HOME
不被认为是绝对目录?还是这个定义意味着变量扩展?外壳的~
特征如何?我在某处可以找到相对目录和绝对目录的可靠定义,而且我一路走错了吗?
~/foo
相对路径。您得到的是硬编码和参数化之间的区别。请参阅我的答案以获取更多详细信息。
~/Documents
和的字符串$HOME/Documents
不是路径。它们确实在扩展后标识(绝对)路径,但它们本身不是路径。我认为这与有多少Unix / Linux用户使用该术语是一致的,但毫无疑问,这些字符串本身也称为路径。
/
,而我们称之为绝对路径。因此,什么开始从一切/
我会叫绝对的(即使这是/usr/../etc
)和其他一切我会打电话的相对(~/Doc
,Doc
,../john/Doc
,$HOME/...
,...)。关键是绝对值应该起作用,而不管当前的工作目录或当前用户如何。相对只能在某些特定的狭窄情况下起作用。