2010-02-19 84 views
61

这是一个相当基本的* nix的问题:如何将pwd更改为符号链接目录的实际路径?

鉴于以下创建符号链接:

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

...从我的主目录/家庭/ jvf/,进入的myproject符号链接给我a pwd /home/jfv/myproject/。现在,我想进入我已经符合链接的目录的父目录,但cd ..命令只会将我带回我的主目录/home/jfv/。无论如何,我都可以跳过我输入的符号链接,而是有一个pwd等于myproject目录的实际路径。也就是说,将我的密码从/home/jfv/myproject/改为/usr/local/projects/myproject/

谢谢:)

回答

109

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

pwd -P 

cd -P .. 
+0

谢谢一打:D – 2010-02-19 20:25:58

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; 
} 
+0

谢谢,我会牢记这一点,如果我需要以编程方式执行此操作;) – 2010-02-19 20:26:31

5

如果以下你应该没问题。

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

[[email protected] ~]$ cd myproject 

2)现在你执行以下命令:

[[email protected] myproject]$ cd -P ./ 

3)现在,你可以检查你的位置,你会看到你是在物理目录

[[email protected] myproject]$ pwd 

的输出将是如下:

/usr/local/projects/myproject 

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

相关问题