Я создал символическую ссылку в моей домашней папке в другой каталог:

$ 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 ответа2

1

И 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). Это возможно и с другими оболочками.

0

Используйте $ CDPATH

$ CDPATH=/usr/local
$ cd dir
$ pwd
/usr/local/dir

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .