在终端中,输入cd ./someDir
并cd someDir
实现相同的结果,即从当前目录更改someDir
为子目录。
在哪种情况下,您会使用一个而不是另一个,或者这两个命令完全等效?
man cd
对这个问题没有太多说明,我无法轻松在线找到文档。是否有文档涵盖此内容?
我在 VSCode 上的 MacOS Catalina 中运行标准 shell,$SHELL --version
报告GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin19)
这是我的第一个问题,我愿意接受有关如何改进它的任何反馈。谢谢。
编辑:这与我拥有的特定用例无关,我只想知道命令之间是否存在任何实际差异。
它出现在最近的 PR 中,在那里我看到了cd ./
使用过的,我问他们是否使用过它,而不是单独使用cd
它。他们明白前者“确保它被限制在当前目录中”,但无法进一步解释。
从表面上看,这两个命令是相同的,但在 Bash 中细微的差异会导致不同的行为,我想知道这里是否是这种情况。通常我会单独使用cd
。我的理解.
是对当前目录的引用。
cd ./someDir 和 cd someDir 之间有什么实际区别吗?
嗯,不是在我的账户上。但是,是的。
在什么情况下你会使用一种而不是另一种
我会使用任何。
,或者这两个命令完全等效?
不。
是否有文档涵盖此内容?
从POSIX cd:
如果目录操作数的第一个组成部分是点或点-点,则继续执行步骤 6。
从 CDPATH 的 -separated 路径名中的第一个路径名开始(请参阅环境变量部分),如果路径名非空,则测试该路径名是否连接,如果该路径名不以字符结尾,则测试一个字符,以及目录操作数命名一个目录。如果路径名为空,则测试点、字符和操作数的连接是否命名目录。在任一情况下,如果结果字符串命名现有目录,则将 curpath 设置为该字符串并继续执行步骤 7。否则,使用 CDPATH 中的下一个路径名重复此步骤,直到所有路径名都已测试完毕。
...
所以:
$ mkdir -v -p a tmp/a
mkdir: created directory 'a'
mkdir: created directory 'tmp'
mkdir: created directory 'tmp/a'
$ CDPATH=$PWD/tmp
然后:
$ cd a
/some/path/tmp/a
但:
$ cd ./a
$ pwd
/some/path/a
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句