Символические ссылки Linux на каталоги
Я создал символическую ссылку в моей домашней папке в другой каталог:
$ pwd
/home/user1
$ ln -s /usr/local/dir/ shortcut
$ ls -l
................................... shortcut -> /usr/local/dir/
$ cd shortcut
$ pwd
/home/user1/shortcut
Я в конечном итоге в этом каталоге, чтобы я мог видеть все файлы там, кроме pwd
сбивает с толку и может вызвать проблемы. Есть ли лучший способ для этого, чтобы он действовал по ярлыку и на самом деле показывает /usr/local/dir
когда я вхожу в cd shortcut
вместо показа нового пути?
2 ответа
И то и другое cd
а также pwd
есть флаги для использования физической структуры каталогов.
CD
$ cd --help
...
-P use the physical directory structure without following
symbolic links: resolve symbolic links in DIR before
processing instances of `..'
...
например
$ cd /var/tmp
$ ln -s /home/user test
$ cd -P test
$ pwd
/home/user
Выше мы используем cd -P
использовать физическую структуру каталогов, так что теперь pwd
дает нам физический путь.
PWD
$ pwd
...
-P print the physical directory, without any symbolic links
...
например
$ cd /var/tmp
$ ln -s /home/user test
$ cd test
$ pwd
/var/tmp/test
$ pwd -P
/home/user
Выше мы cd
в каталог как обычно, так pwd
дает символический путь. С помощью pwd -P
даст физический путь.
Установить глобально в Bash
Если вы используете bash
Вы можете сказать ему, чтобы он полностью игнорировал символические ссылки и просто использовал физическую структуру каталогов, запустив set -P
(сокращение для set -o physical
, смотрите страницу руководства `bash). Это возможно и с другими оболочками.
Используйте $CDPATH
$ CDPATH=/usr/local
$ cd dir
$ pwd
/usr/local/dir