¿Cómo cambio mi pwd para el camino real de un directorio de enlace simbólico?

StackOverflow https://stackoverflow.com/questions/2299157

  •  21-09-2019
  •  | 
  •  

Pregunta

He aquí una pregunta * nix bastante elemental:

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

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

... desde mi directorio / home / JVF / , que entra en el miproyecto enlace simbólico me da una PWD <> / home / jfv / miproyecto / . Ahora, me gustaría entrar en el directorio padre del directorio que he enlazado simbólicamente a, pero el cd .. comando sólo me va a traer de vuelta a mi directorio / home / jfv / . ¿Hay alguna forma de escapar de la pista de enlace simbólico que he introducido, y en lugar de tener una discapacidad igual a la trayectoria real de la directorio miproyecto. Es decir, el cambio de mi pwd de / home / jfv / miproyecto / en / usr / proyectos / local / miproyecto /

Gracias:)

¿Fue útil?

Solución

uso Sólo -P bandera (física):

pwd -P

cd -P ..

Otros consejos

Si hace lo siguiente que debe estar bien.

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

[jfv@localhost ~]$ cd myproject

2) Ahora se ejecute el siguiente comando:

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

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

[jfv@localhost myproject]$ pwd

La salida será como sigue:

/usr/local/projects/myproject

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

Mediante programación, 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;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top