91

这是一个相当基本的 *nix 问题:

鉴于以下符号链接创建:

ln -s /usr/local/projects/myproject/ myproject

...从我的主目录/home/jvf/输入myproject符号链接会给我一个密码/home/jfv/myproject/。现在,我想进入我符号链接到的目录的父目录,但是cd ..命令只会让我回到我的主目录/home/jfv/。无论如何要逃避我输入的符号链接路径,而是有一个等于myproject目录的实际路径的 pwd。也就是说,将我的密码从/home/jfv/myproject/更改为/usr/local/projects/myproject/

谢谢 :)

4

3 回答 3

152

只需使用-P(物理)标志:

pwd -P

cd -P ..
于 2010-02-19T20:05:58.393 回答
9

如果您执行以下操作,您应该没问题。

1)首先你按照你的符号链接:

[jfv@localhost ~]$ cd myproject

2)现在执行以下命令:

[jfv@localhost myproject]$ cd -P ./

3)现在,您可以检查您的位置,您将看到您在物理目录中

[jfv@localhost myproject]$ pwd

输出如下:

/usr/local/projects/myproject

现在,您所做的一切都将是本地的,而不是在符号链接上。

于 2012-06-01T15:25:27.157 回答
3

以编程方式,您可以使用 getcwd 库函数执行此操作:

#include <unistd.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    char buf[1024*1024L];
    char *cwd;

    cwd = getcwd(buf, sizeof buf);
    if (cwd == NULL) {
        perror("getcwd");
        return 1;
    }
    printf("%s\n", cwd);
    return 0;
}
于 2010-02-19T20:19:10.417 回答