`cat ../ test` не находит файл. Как заставить `cat` не разрешать символическую ссылку? - PullRequest
0 голосов
/ 30 октября 2018

Я создаю этот файл как:

$ echo "ABC" > /home/kes/test

Я могу cd домой и из него:

kes@work ~/s $ cd ..
kes@work ~ $ cat test
ABC
kes@work ~ $ cd s
kes@work ~/s $ 

~/s является мягкой ссылкой:

kes@work ~/s $ pwd
/home/kes/s
kes@work ~/s $ pwd -P
/home/kes/work/projects/safevpn/repo2

Но когда я использую относительный путь, он не работает:

kes@work ~/s $ cat ../test
cat: ../test: No such file or directory

Но пока

Я не ожидаю, что cat попытается открыть файл в родительском каталоге (разрешает символическую ссылку), поскольку cd не разрешает его:

$ rm /home/kes/test
$ mkdir /home/kes/test
$ cd ~/s
$ cd ../test
$ pwd
/home/kes/test

Как заставить эти команды работать согласованно?

1 Ответ

0 голосов
/ 30 октября 2018

Если вы прочитаете справочную страницу cd, вы увидите, что cd может или не может разрешать программные ссылки, в зависимости от того, какую опцию вы предоставляете (-L или -P). Если опция не указана, cd использует значение по умолчанию -L, что означает, что не разрешаются программные ссылки.

Если указаны оба параметра -L и -P, последний из этих параметров должен быть использован
а все остальные игнорируются. Если ни -L, ни -P не указаны, операнд должен быть
обрабатывается точка-точка логически;

И

-L Логически обрабатывать операнд точка-точка; символическая ссылка компоненты должны
не разрешаться до обработки компонентов точка-точка (см. шаги 8.
и 9. в ОПИСАНИИ).

...