Вот довольно элементарное *, отклоняют вопрос:
Учитывая следующее создание символьной ссылки:
ln -s /usr/local/projects/myproject/ myproject
... из моего корневого каталога/home/jvf/, вводя myproject символьную ссылку дает мне pwd/home/jfv/myproject/. Теперь, я хотел бы ввести родительский каталог каталога, у меня есть symlinked к, но CD.. команда только возвратит меня моему корневому каталогу/home/jfv/. Должен там так или иначе выйти из следа символьной ссылки, который я ввел и вместо этого имею pwd, равный фактическому пути myproject каталога. Таким образом, изменяя мой pwd от/home/jfv/myproject/в/usr/local/projects/myproject/?
Спасибо:)
Просто используйте -P
(физический) флаг:
pwd -P
cd -P ..
Программно это можно сделать с помощью библиотечной функции 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;
}