单击选项卡时出现shell init问题,getcwd出了什么问题?

时间:2012-09-09 10:15:32

标签: linux bash shell pwd getcwd

一旦我点击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 init问题?

4 个答案:

答案 0 :(得分:249)

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

答案 1 :(得分:52)

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

答案 2 :(得分:4)

偶然地,这是在使用OverlayFS(或其他特殊文件系统类型)的目录上发生的吗?

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

  

这似乎可以追溯到内部实现   bash中的getcwd()。交叉编译时,它无法检查getcwd()的使用情况   malloc,所以它是谨慎的并设置GETCWD_BROKEN并使用   getcwd()的内部实现。这个内部实现   似乎与OverlayFS无关。

     

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

您可以使用bash_cv_getcwd_malloc=yes配置和重建bash(如果您实际构建bash并且您的C库执行malloc getcwd调用)。

答案 3 :(得分:3)

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