1

我正在编写自己的 shell 程序。我目前正在使用 chdir 实现 cd 命令。我想使用以下选项实现 chdir:

-P 不跟随符号链接
-L 跟随符号链接(默认)

之前在这里发布了一个问题,询问路径是符号链接还是实际路径。但是有了这些信息,我无法获得有关如何处理上述问题的任何想法。

谢谢

4

2 回答 2

0

也许我误解了,但你只是想要(伪代码):

is_symlink = method_from_other_question();
if(is_symlink and arg(-P))
    fail("Can't switch directory -- is a symlink");

如果您已经尝试过这样的方法但它不起作用,请在您的问题中包含代码,我们可以帮助调试它

于 2010-06-19T03:48:29.873 回答
0

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,它为我的当前目录显示了完全错误的绝对路径。

于 2010-06-20T01:01:33.097 回答