Почему bash в режиме posix не отслеживает мои символические ссылки?

Я наблюдаю странное поведение, когда запускаю "ssh" в системе Linux. Я отследил это частично до разницы в bash при запуске в режиме posix.

% bash --posix
% ln -s /tmp mytmp
% cd mytmp
% pwd
/home/user/mytmp

На странице руководства bash в режиме posix есть следующие элементы:

-> Когда встроенная команда cd вызывается в логическом режиме, а путь, созданный из $ PWD, и имя каталога, указанное в качестве аргумента, не относится к существующему каталогу, cd завершится ошибкой вместо возврата в физический режим.

-> Когда встроенной команде pwd предоставляется опция -P, она сбрасывает $ PWD на путь, не содержащий символических ссылок.

-> Встроенная команда pwd проверяет, что выводимое ею значение совпадает с текущим каталогом, даже если не запрашивается проверка файловой системы с параметром -P.

ни одно из этих слов не похоже на то, что я вижу.

Похоже, у меня нет каких-либо специальных переменных, связанных с PWD, в файлах запуска. Я знаю, что --posix контролирует, какие файлы запуска используются.

Есть ли переменная, которая явно управляет поиском символических ссылок?

Я могу придумать несколько способов «отменить» этот эффект, но мне нужно знать, почему это происходит.

Я использую ssh для запуска make, а затем make использует pwd, и ЭТОТ pwd дает неправильный ответ. Он должен брать его прямо из настройки ENV. Я хотел бы найти где-нибудь документы о том, что происходит.


person Chris Quenelle    schedule 04.10.2010    source источник


Ответы (1)


Если вы сделаете set -o | grep physical, а для него установлено значение on, это то же самое, что и -P.

Включить:

set -o physical

or

set -P

выключить:

set +o physical

or

set +P

Проверьте, не переопределены ли cd или pwd:

type -a cd pwd

Бывают обстоятельства, когда pwd и $PWD не синхронизируются. В случае сомнений используйте pwd (как в `$(pwd)).

person Dennis Williamson    schedule 04.10.2010
comment
Кто-нибудь знает, почему это устанавливается по-другому в режиме --posix? - person Chris Quenelle; 05.10.2010