Запись к ext4 файловой системе зависает в то время как lazyinit в фоне

Предполагая, что вы используете Bash, который имеет pwd как встроенный 1 , происходит следующее: команда cd запускает оболочку для обновления информации о текущий каталог. Пока вы не запустите cd , оболочка будет думать, что текущий каталог не изменилась, поэтому она не пытается получить свой новый путь.

Кстати, чтобы немного расширить ответ Gnouc , в выпуске 6 базовых спецификаций Open Group в переменных среды говорится:

PWD [...] представляет собой абсолютный путь к текущему рабочему каталогу. Он не должен содержать никаких компонентов имени файла, состоящих из точек или точек. Значение устанавливается утилитой cd .

С другой стороны, если вы запустите внешнюю команду / bin / pwd , вы получите новое имя текущего каталога. Почему так происходит? Команда pwd из coreutils выполняет некоторые проверки корректности переменной среды PWD и не печатает ее, если она недействительна. Подробности можно найти в исходном коде функции logical_getcwd (из coreutils версии 8.23).

Другая команда, которую вы можете использовать для получения канонического пути к текущему каталогу, - это readlink -f. 2 .

[ciupicri@host ttt]$ pwd
/tmp/ttt
[ciupicri@host ttt]$ mv ../ttt ../tttt
[ciupicri@host ttt]$ pwd
/tmp/ttt
[ciupicri@host ttt]$ /bin/pwd
/tmp/tttt
[ciupicri@host ttt]$ readlink -f .
/tmp/tttt

1 Запуск типа pwd может подтвердить это.

2 Из справочной страницы readlink : -f , - canonicalize canonicalize путем рекурсивного перехода по каждой символической ссылке в каждом компоненте данного имени ; все компоненты, кроме последнего, должны существовать.

1
14.01.2015, 05:07
1 ответ
1
27.01.2020, 23:51

Теги

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