单击选项卡时出现shell初始化问题,getcwd怎么了?


153

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

Answers:


280

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


2
我不认为我的目录不存在,不是有人重新创建的目录,我在/ root目录中……所以问题可能与您所说的有点不同……
hugemeow 2012年

1
您可以检查HOME env变量吗?echo $HOME; 如果那指向一个不存在的位置,那不是。
Costi Ciudatu 2012年

1
(我用TMUX壳)选项卡效果很好一些时间,但有时当我创造新的选项卡与TMUX,按Tab键,而这个错误出现,我不知道发生了什么:(
hugemeow

@kevinarpe很高兴知道,谢谢!我一直以为它很聪明,什么都不做cd .
Costi Ciudatu

2
@kevinarpe,是的,$PWD由POSIX保证可以定义。参见pubs.opengroup.org/onlinepubs/9699919799/utilities/…–
Charles Duffy

61

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


7

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

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

看来这可以追溯到bash中getcwd()的内部实现。交叉编译时,它无法检查是否使用了malloc的getcwd(),因此它很谨慎并设置了GETCWD_BROKEN并使用了getcwd()的内部实现。此内部实现似乎不适用于OverlayFS。

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

您可以使用以下命令配置和重建bash bash_cv_getcwd_malloc=yes(如果您实际上是在构建bash,并且您的C库确实分配了getcwd调用)。


通过进行完整的库更新,我得以解决我的错误
理查德·戴

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.