Почему bash в режиме posix не может преследовать мои символические ссылки? - PullRequest
0 голосов
/ 05 октября 2010

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

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

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

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

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

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

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

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

Существует ли переменная, которая явно контролирует, например, погоню за символическими ссылками?

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

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

1 Ответ

1 голос
/ 05 октября 2010

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

Для включения:

set -o physical

или

set -P

выключить:

set +o physical

или

set +P

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

type -a cd pwd

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

...