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