Как я изменяю свой pwd на реальный путь symlinked каталога?

Вот довольно элементарное *, отклоняют вопрос:

Учитывая следующее создание символьной ссылки:

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/?

Спасибо:)

76
задан Johan Fredrik Varen 19 February 2010 в 19:54
поделиться

2 ответа

Просто используйте -P (физический) флаг:

pwd -P

cd -P ..
131
ответ дан 24 November 2019 в 11:18
поделиться

Программно это можно сделать с помощью библиотечной функции 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;
}
3
ответ дан 24 November 2019 в 11:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: