Я использую Linux в течение последних 15 лет, и сегодня я столкнулся с чем-то, что меня удивило.
Настройте следующую структуру каталогов:
$ cd /tmp
$ mkdir /tmp/symlinktest
$ mkdir /tmp/symlinktest/dir
$ mkdir /tmp/symlinktarget
Теперь создайте две ссылки sym в symlinktest, указывающие на symlinktarget:
$ cd /tmp/symlinktest
$ ln -s ../symlinktarget Asym
$ ln -s ../symlinktarget Bsym
Теперь в bash следующее завершение вкладки делает странные вещи. Введите следующее:
$ cd dir
$ cd ../A[TAB]
Нажатие клавиши табуляции выше завершает строку для:
$ cd ../Asym/
как я и предполагал. Теперь нажмите Enter, чтобы перейти в Asym и введите:
$ cd ../B[TAB]
На этот раз нажатие клавиши табуляции завершает ссылку на:
$ cd ../Bsym[space]
Обратите внимание, что после Bsym теперь есть пробел и нет косой черты.
Мой вопрос: почему при переходе от физического каталога "dir" к Asym он распознает, что Asym является ссылкой на каталог, но при переходе от одной ссылки sym к другой он не распознает, что это ссылка на каталог?
Кроме того, если я пытаюсь создать новый файл в Asym, я получаю сообщение об ошибке:
$ cd /tmp/symlinktest/Asym
$ cat hello > ../Bsym/file.txt
-bash: ../Bsym/file.txt: No such file or directory
Я всегда думал, что символические ссылки в основном прозрачны, за исключением программ, которые должны ими манипулировать. Это нормальное поведение?
Большое спасибо,
Энди