【发布时间】:2010-06-19 03:44:15
【问题描述】:
我正在编写自己的 shell 程序。我目前正在使用 chdir 实现 cd 命令。 我想使用以下选项实现 chdir:
-P 不要跟随符号链接
-L 跟随符号链接(默认)
我发布了question here previously asking to know if a path is a symbolic link or actual path。但是有了这些信息,我无法获得有关如何继续解决上述问题的任何想法。
谢谢
【问题讨论】:
-
你有这个功能的好用例吗?我认为任何现有的 shell 都不会这样做,我认为任何用户都不会这样做,但也许他们是。看起来就像是神秘的 unix 复杂性,没有太多最终用户的好处。当最终用户关心目录是否是符号链接时,符号链接“功能”将失败。最终用户不应该关心。虽然我可以看到递归文件遍历实用程序(例如 tar 和 scp 具有不遵循符号链接的选项)的更多有效用例,但对于执行 cd 的交互式 shell,价值是什么并不明显。只是好奇。
-
Bash 提供
cd -P和cd -L(默认为cd -L)。当您完成cd -P后,cd ..会带您进入物理文件系统层次结构,即使您通过符号链接到达那里,但如果您已经完成cd -L到达那里,那么 @987654328 @ 从符号链接的名称中去掉一个元素,让你“升级”一个级别。