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

hug*_*eow 143 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
Run Code Online (Sandbox Code Playgroud)

有时,错误信息是:

shell-init: error retrieving current directory: getcwd: cannot access parent directories: No s uch file or directory
Run Code Online (Sandbox Code Playgroud)

如何解决shell init问题?

Cos*_*atu 264

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

  • 作为一个技巧:`cd .`或`cd $(pwd)`也可以. (5认同)
  • 我不认为我的目录不存在,没有人重新创建它,我在/ root ...所以问题可能有点不同,因为你的说法...... (2认同)
  • @kevinarpe,是的,`$ PWD`由POSIX保证定义.请参见http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html (2认同)

Mee*_*com 56

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


jdk*_*ght 6

偶然地,这是在使用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调用)。


Vir*_*rni 5

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