Мои символьные ссылки Linux действуют правильно?

Я использовал Linux на и прочь в течение прошлых 15 лет, и сегодня я столкнулся с чем-то в ударе, который удивил меня.

Установите следующую структуру каталогов:

$ cd /tmp
$ mkdir /tmp/symlinktest
$ mkdir /tmp/symlinktest/dir
$ mkdir /tmp/symlinktarget

Теперь создайте две символьных ссылки в symlinktest, указывающем symlinktarget:

$ cd /tmp/symlinktest
$ ln -s ../symlinktarget Asym
$ ln -s ../symlinktarget Bsym

Теперь, в ударе, следующее заполнение клавишей Tab делает странные вещи. Введите следующее:

$ cd dir
$ cd ../A[TAB]

Нажатие клавиши Tab выше завершает строку к:

$ cd ../Asym/

поскольку я ожидал. Теперь нажмите Enter для изменения в Asym и тип:

$ cd ../B[TAB]

На этот раз нажатие клавиши Tab завершает ссылку на:

$ cd ../Bsym[space]

Обратите внимание, что существует теперь пространство после Bsym и нет никакой запаздывающей наклонной черты.

Мой вопрос, почему при изменении из физического каталога "dir" к Asym он распознает, что Asym является ссылкой на каталог, но при изменении от одной символьной ссылки до другого, он не распознает, что это - ссылка на каталог?

Кроме того, если я пытаюсь создать новый файл в Asym, я получаю сообщение об ошибке:

$ cd /tmp/symlinktest/Asym
$ cat hello > ../Bsym/file.txt
-bash: ../Bsym/file.txt: No such file or directory

Я всегда думал, что символьные ссылки были главным образом очевидны кроме для программ, которые должны управлять ими. Это нормальное поведение?

Большое спасибо,

Andy

2
задан 11.06.2010, 15:57

1 ответ

удар cd встроенный делает немного волшебства с ...

Когда Вы делаете:

cd ../Bsym

Это смотрит на $PWD, удаляет последний компонент, добавляет компонент Bsym. Это что cd и cd -L сделайте, в противоположность cd -P. Также посмотрите pwd -L и pwd -P.

Когда Вы делаете:

cat hello > ../Bsym/file.txt

Это волшебство не происходит. $PWD не используется, /proc/self/cwd используется вместо этого. cwd является inode, и.. просто родитель inode, который, оказывается, /tmp.

2
ответ дан 11.12.2019, 22:37

Теги

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