Comment puis-je changer mon PWD au vrai chemin d'un répertoire ayant un lien symbolique?
Question
Voici une question * nix plutôt élémentaire:
Compte tenu de la création symlink suivante:
ln -s /usr/local/projects/myproject/ myproject
... à partir de mon répertoire / home / JVF / , entrant dans le myproject symlink me donne un PWD / home / jfv / myproject / . Maintenant, je voudrais entrer dans le répertoire parent du répertoire que j'ai un lien symbolique, mais cd .. commande ne me ramener à mon répertoire / home / jfv / . Y at-il de toute façon d'échapper à la piste symlink que je suis entré, et ont plutôt une PWD égale à la trajectoire réelle du myproject Répertoire. Autrement dit, changer mon PWD de / home / jfv / myproject / dans / usr / local / projets / myproject /
Merci:)
La solution
Il suffit d'utiliser -P
(physique) drapeau:
pwd -P
cd -P ..
Autres conseils
Si vous ne vous la suivante devriez être OK.
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 position 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 faites sera locale et non pas sur le lien symbolique.
Programmatically, vous devez faire 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;
}