我正在编写自己的 shell 程序。我目前正在使用 chdir 实现 cd 命令。我想使用以下选项实现 chdir:
-P 不跟随符号链接
-L 跟随符号链接(默认)
我之前在这里发布了一个问题,询问路径是符号链接还是实际路径。但是有了这些信息,我无法获得有关如何处理上述问题的任何想法。
谢谢
我正在编写自己的 shell 程序。我目前正在使用 chdir 实现 cd 命令。我想使用以下选项实现 chdir:
-P 不跟随符号链接
-L 跟随符号链接(默认)
我之前在这里发布了一个问题,询问路径是符号链接还是实际路径。但是有了这些信息,我无法获得有关如何处理上述问题的任何想法。
谢谢
也许我误解了,但你只是想要(伪代码):
is_symlink = method_from_other_question();
if(is_symlink and arg(-P))
fail("Can't switch directory -- is a symlink");
如果您已经尝试过这样的方法但它不起作用,请在您的问题中包含代码,我们可以帮助调试它
Shell 通常会使用很多技巧来找到真正的目录名称。为了方便我们的用户,他们还伪造了很多东西。例如:
$ pwd
/home/auser
$ ls -l
adir -> some/place/
some/
$ cd adir
$ pwd
/home/auser/adir
$ cd ..
$ pwd
/home/auser
看起来合乎逻辑?再看一遍:..
in/home/auser/some/place
点到/home/auser/some
,/home/auser
还没cd ..
带你到后面。
IOW,除了在内存中始终保留当前目录的绝对路径并在执行cd
.
是的,它不可靠。过去有一次我设法欺骗了 bash,它为我的当前目录显示了完全错误的绝对路径。