Проблема с init init при нажатии вкладки, что случилось с getcwd?
как только я нажму Tab на bash, появится сообщение об ошибке, что не так?
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
иногда сообщение об ошибке:
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No s uch file or directory
как решить проблему оболочки оболочки?
Ответы
Ответ 1
Это обычно происходит, когда ваш текущий каталог больше не существует. Скорее всего, с другого терминала вы удалите этот каталог (из script или что-то еще). Чтобы избавиться от этого, в случае, если ваш текущий каталог был воссоздан тем временем, просто cd
в другой (существующий) каталог, а затем cd
назад; самым простым было бы: cd; cd -
.
Ответ 2
Просто измените каталог на другой и вернитесь. Вероятно, это было удалено или перемещено.
Ответ 3
Случайно ли это происходит в каталоге с использованием OverlayFS (или другого специального типа файловой системы)?
У меня была эта проблема, когда моя кросс-скомпилированная версия bash использовала внутреннюю реализацию getcwd
, которая имеет проблемы с OverlayFS. Я нашел информацию об этом здесь:
Похоже, что это можно проследить до внутренней реализации getcwd() в bash. При скрещенном компиляции он не может проверить использование getcwd() malloc, поэтому он осторожен и устанавливает GETCWD_BROKEN и использует внутренняя реализация getcwd(). Эта внутренняя реализация похоже, не работает с OverlayFS.
http://permalink.gmane.org/gmane.linux.embedded.yocto.general/25204
Вы можете настроить и перестроить bash с помощью bash_cv_getcwd_malloc=yes
(если вы действительно строите bash, а ваша библиотека C выполняет malloc-вызов getcwd).
Ответ 4
Да, cd; и cd - будут работать.
Причина, по которой это видно, заключается в том, что каталог удаляется из любого другого терминала или любой другой программы и воссоздает его. Поэтому запись i- node изменяется, поэтому программа не может получить доступ к старой записи i-w630.