在引用的驱动器上,sh: 0: getcwd() 失败: 没有那个文件或目录。

300

我试图在Ubuntu 12.04(Precise Pangolin)上编译ARM代码。

当我把代码放在本地目录中时,一切都正常。

但是当我把代码放在挂载的目录中时,就会出现错误:

making testXmlFiles
sh: 0: getcwd() failed: No such file or directory
ARM Compiling xxxxx.c
sh: 0: getcwd() failed: No such file or directory

以下是我在fstab中的设置:

//10.0.0.1/data /mnt/data   cifs    auto,noserverino,credentials=/root/.smbcredentials,file_mode=0777,dir_mode=0777,uid=user,gid=users,noperm 0 0

这里发生了什么?可能是什么原因导致了这个错误?


74
尝试执行不存在的路径中的命令时,可能会触发此错误消息(例如,如果进程B删除进程A当前所在的文件夹)。一个真实的例子是,在终端A中:mkdir ~/myfunnydir && cd ~/myfunnydir;在终端B中:rm -rf ~/myfunnydir;最后回到终端A:java --version。请注意,这里的A和B指的是不同的终端窗口或会话。 - dbm
您的目录已自动挂载,但凭据存储在/root中。普通用户将无法挂载它,因为凭据对他们来说是不可读的。尝试将其设置为非自动挂载,并让root挂载它。 - alvits
8个回答

804

通常,此错误是由于从不再存在的目录中运行命令导致的。

尝试更改您的目录并重新运行命令。


7
getcwd函数获取当前工作目录,如果该目录被删除或移动,它会感到不满!请参阅Linux手册中的getcwd - Human
4
如果您已经删除了所在的目录并使用相同的名称重新创建了一个位于相同位置的新目录,您甚至可能需要执行此操作。 - Jackson
2
我所做的就是输入cd,然后重新运行命令,它就起作用了,谢谢! - FreeSoftwareServers
1
当我从不存在的目录运行apt-get upgrade时,我自己也注意到了这一点。该消息会连续出现大约20次,然后更新将继续进行,就好像什么都没有发生过一样。我希望能找到更多关于为什么apt-get甚至关心我在哪个文件夹中,特别是如此坚持而又影响很小的信息。 - Darren Ringer
我仍然遇到一个错误:dpkg: 处理软件包 debconf (--configure) 时出错: 软件包处于非常不一致的状态;在尝试配置之前,您应该重新安装它 处理时遇到了错误: debconf E: 子进程 /usr/bin/dpkg 返回错误代码(1) - IgorGanapolsky
显示剩余3条评论

36

这也发生在我重新创建目录的时候。虽然目录名字一样,但要使其再次工作,只需运行以下命令:

cd .

19

尝试以下命令。这个对我起了作用。

cd; cd -

1
这是什么?它是什么意思? - dılo sürücü
5
通常情况下,输入 cd; 命令将带你回到主目录,而输入 cd - 命令则会带你返回到当前目录之前所在的目录。基本上就是回到主目录再返回来。然而,如果你原先所在的目录被删除了,这种方法就不起作用了。 - Human

10

有时候会出现这种情况,特别是在使用符号链接的时候。如果你遇到了这个问题,并且知道你所在的目录已经存在,但是符号链接可能已经改变,你可以使用以下命令:

cd $(pwd)

6
在Ubuntu 16.04.3 LTS(Xenial Xerus)中,下面的命令适用于我:

exit

然后我再次登录。


2
实际上,只需像Hooman在他的答案中所说的那样切换到现有目录即可。 - derHugo

3
请检查目录路径是否存在。如果您在运行命令的文件夹不存在,就会出现这个错误。
可能是您在命令行中从相同路径执行了删除命令。

2
这就是Hooman在他的回答中所说的。 - derHugo
四个多月过去了。 - Peter Mortensen

2
如果某个目录/文件夹不存在,但你以某种方式导航到该目录,则会出现此错误。
例如:
- 当前,您在“mno”目录中(路径=abc/def/ghi/jkl/mno) - 运行“sudo su”并删除mno - 转到“ghi”目录并删除“jkl”目录 - 现在您在“ghi”目录中(路径为abc/def/ghi) - 运行“exit” - 运行“exit”后,您将收到该错误 - 现在您将在“mno”(路径=abc/def/ghi/jkl/mno)文件夹中。该文件夹不存在。
因此,通常当目录不存在时,会显示此错误。
要修复此问题,请简单运行“cd;”或移动到任何其他已存在的目录。

0

在我的情况下,之前的答案都没有起作用。

在我苦思冥想一段时间后,我发现我通过运行一个自定义的Linux服务器设置bash脚本破坏了/etc/passwd条目,尽管此前它能够正常工作,但这次 "sed" 命令中的正则表达式抹去了所有现有的条目 :D

从另一个正常工作的Linux服务器复制默认条目后,我终于可以重新启动sshd了。

因此,在对其应用任何正则表达式替换之前,请不要忘记备份原始的/etc/passwd文件 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接