如何将我的pwd更改为符号链接目录的真实路径?

时间:2010-02-19 19:54:58

标签: linux symlink pwd

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

给出以下符号链接创建:

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

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

谢谢:)

3 个答案:

答案 0 :(得分:129)

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

pwd -P

cd -P ..

答案 1 :(得分:5)

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

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

[jfv@localhost ~]$ cd myproject

2)现在执行以下命令:

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

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

[jfv@localhost myproject]$ pwd

输出如下:

/usr/local/projects/myproject

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

答案 2 :(得分: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;
}