当单击 tab 时会出现 shell init 问题,getcwd 有什么问题吗?

一旦我点击 Tab on 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

如何解决 shell init 问题?

143501 次浏览

这通常发生在你的工作目录不再存在的时候。最有可能的情况是,从另一个终端删除该目录(从脚本或其他内容中)。为了解决这个问题,如果在此期间重新创建了工作目录,那么只需将 cd转移到另一个(现有的)目录,然后返回 cd即可,最简单的方法是: cd; cd -

是的,cd; 和 cd-将工作。 原因是,它可以看到,目录是从任何其他终端或任何其他程序删除,并重新创建它。所以 i-node 条目被修改了,这样程序就不能访问旧的 i-node 条目了。

只要把目录换到另一个目录,然后再回来。也许那个目录已经被删除或者移动了。

碰巧的是,这是否发生在使用 OverlayFS (或其他特殊文件系统类型)的目录上?

我只是有这个问题,我的 bash 交叉编译版本将使用 getcwd的内部实现,这与 OverlayFS 有问题。我在这里找到了相关信息:

这似乎可以追溯到 当交叉编译时,它不能检查 getcwd ()的使用情况 因此,它非常谨慎,设置 GETCWD _ BROKEN 并使用 Getcwd ()的内部实现 在 OverlayFS 中似乎不能很好地工作。

Http://permalink.gmane.org/gmane.linux.embedded.yocto.general/25204

您可以使用 bash_cv_getcwd_malloc=yes配置和重新构建 bash (如果您实际上正在构建 bash,并且您的 C 库确实 malloc 了一个 getcwd 调用)。