2010-02-19 10 views
61

Aquí hay una pregunta * nix bastante elemental:¿Cómo cambio mi pwd a la ruta real de un directorio enlazado?

Dada la siguiente creación de enlaces simbólicos:

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

... desde mi directorio /home/JVF/, entrando en la miproyecto enlace simbólico me da una pwd /home/jfv/myproject/. Ahora, me gustaría ingresar al directorio principal del directorio al que he enlazado, pero el comando cd .. solo me devolverá al directorio de mi casa /home/jfv/. ¿Hay alguna forma de escapar del sendero de enlace simbólico que he ingresado, y en su lugar tener una pwd igual a la ruta real del directorio myproject? Es decir, cambiando mi pwd de /home/jfv/myproject/ en /usr/local/projects/myproject/?

Gracias :)

Respuesta

109

Sólo tiene que utilizar -P (física) de la bandera:

pwd -P 

cd -P .. 
+0

Gracias a una docena: D –

3

mediante programación, que haría esto con la función de biblioteca 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

Gracias, lo tendré en cuenta si alguna vez tengo que hacer esto programáticamente;) –

5

Si la siguiente deberías estar bien

1) En primer lugar, seguir su enlace simbólico:

[[email protected] ~]$ cd myproject 

2) Ahora se ejecuta el siguiente comando:

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

3) Ahora, se puede comprobar su ubicación y verá que usted se encuentran en el directorio físico

[[email protected] myproject]$ pwd 

la salida será el siguiente:

/usr/local/projects/myproject 

Ahora, todo lo que hagas será local y no en el enlace simbólico.

Cuestiones relacionadas