Voici une question plutôt élémentaire * nix:
Étant donné la création de lien symbolique suivante:
ln -s /usr/local/projects/myproject/ myproject
... depuis mon répertoire personnel / home/jvf /, entrer le lien symbolique myproject me donne un pwd / home/jfv/myproject /. Maintenant, je voudrais entrer dans le répertoire parent du répertoire auquel j'ai créé un lien symbolique, mais la commande cd .. ne me ramènera qu'à mon répertoire personnel / home/jfv/. Existe-t-il de toute façon pour échapper au chemin du lien symbolique que j'ai entré et avoir à la place un pwd égal au chemin réel du répertoire monprojet. Autrement dit, changer mon pwd de / home/jfv/myproject / en / usr/local/projects/myproject /?
Merci :)
Utilisez simplement -P
drapeau (physique):
pwd -P
cd -P ..
Si vous procédez comme suit, vous devriez être OK.
1) Vous suivez d'abord 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 dans le répertoire physique
[jfv@localhost myproject]$ pwd
La sortie sera la suivante:
/usr/local/projects/myproject
Maintenant, tout ce que vous faites sera local et non sur le lien symbolique.
Par programme, vous le feriez 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;
}