78 votes

Comment puis-je changer mon pwd sur le chemin réel d'un répertoire lié par un lien symbolique?

Voici une plutôt élémentaire *nix question:

Étant donné le lien symbolique suivant la création:

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

... de mon répertoire personnel /home/jvf/, en entrant dans le myproject lien symbolique me donne un pwd /home/jfv/monprojet/. Maintenant, je voudrais entrer dans le répertoire parent du répertoire, j'ai un lien symbolique, mais le cd .. commande uniquement pour me ramener à la maison de mon répertoire /home/jfv/. Est-il de toute façon à échapper à la lien symbolique trail que j'ai saisi, et au lieu d'avoir un dps égal au chemin d'accès de l' myproject répertoire. C'est, en changeant mon pwd à partir de /home/jfv/monprojet/ dans /usr/local/projets/monprojet/?

Merci :)

136voto

Cfr Points 2525

Il suffit d'utiliser l'indicateur -P (physique):

 pwd -P

cd -P ..
 

5voto

DrupalFever Points 61

Si vous procédez comme suit, vous devriez être en ordre.

1) D'abord, vous suivez votre lien symbolique:

 [jfv@localhost ~]$ cd myproject
 

2) Maintenant, vous exécutez la commande suivante:

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

3) Maintenant, vous pouvez vérifier votre emplacement et vous verrez que vous êtes sur le répertoire physique

 [jfv@localhost myproject]$ pwd
 

La sortie sera comme suit:

 /usr/local/projects/myproject
 

Maintenant, tout ce que vous ferez sera local et non sur le lien symbolique.

3voto

Lars Wirzenius Points 12197

Par programme, vous feriez cela avec la fonction de bibliothèque 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;
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X