159

一旦我在 bash 上单击 Tab,就会出现错误消息,这是怎么回事?

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初始化问题?

4

4 回答 4

300

这通常发生在您的当前目录不再存在时。最有可能的是,您从另一个终端删除该目录(从脚本或其他内容中)。为了摆脱这种情况,如果您的当前目录在此期间被重新创建,只需cd到另一个(现有)目录,然后再cd返回;最简单的是:cd; cd -.

于 2012-09-09T10:28:16.180 回答
68

只需将目录更改为另一个目录并返回即可。可能那个已经被删除或移动了。

于 2014-06-25T18:43:36.003 回答
7

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

我刚刚遇到了这个问题,我的 bash 的交叉编译版本将使用一个内部实现,getcwd该实现与 OverlayFS 存在问题。我在这里找到了有关此的信息:

这似乎可以追溯到 bash 中 getcwd() 的内部实现。交叉编译时,无法检查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 调用)。

于 2015-09-02T20:53:30.633 回答
6

是的,光盘;和 cd - 会工作。它可以看到的原因是,目录正在从任何其他终端或任何其他程序中删除并重新创建它。因此 i-node 条目被修改,因此程序无法访问旧的 i-node 条目。

于 2013-09-28T23:55:48.017 回答