Как изменить pwd на реальный путь к символически связанному каталогу?
вот довольно элементарный * nix вопрос:
учитывая следующее Создание символической ссылки:
ln -s /usr/local/projects/myproject/ myproject
... из моего домашнего каталога /главная/jvf/, введя myproject symlink дает мне pwd / главная / jfv/myproject/. Теперь я хотел бы ввести родительский каталог каталога, с которым я связался, но компакт-диск .. команда вернет меня только в мой домашний каталог /главная/jfv/. Быть там в любом случае, чтобы избежать тропы символической ссылки, которую я ввел, и вместо этого иметь pwd, равный фактическому пути myproject. То есть, изменение моего pwd от / главная / jfv/myproject/ на / usr / local / проекты/myproject/?
спасибо :)
3 ответов
если вы сделаете следующее, Вы должны быть в порядке.
1) Сначала вы следуете своей символической ссылке:
[jfv@localhost ~]$ cd myproject
2) Теперь вы выполняете следующую команду:
[jfv@localhost myproject]$ cd -P ./
3) Теперь вы можете проверить свое местоположение, и вы увидите, что находитесь в физическом каталоге
[jfv@localhost myproject]$ pwd
выход будет следующим:
/usr/local/projects/myproject
теперь все, что вы делаете, будет локальным, а не на символической ссылке.
программно вы сделали бы это с помощью функции библиотеки 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;
}