sh:0:getcwd()失败:没有这样的文件或目录


11

我正在尝试在Ubuntu 12.04中编译ARM代码。

将代码放在本地目录中时,一切工作正常。但是,当我将代码放在引用的安装目录中时,会发生此错误:

sh: 0: getcwd() failed: No such file or directory
sh: 0: getcwd() failed: No such file or directory

这是我的挂载命令:

sudo mount -t cifs -o username=wx,passwd=wx,auto,nounix,noserverino,file_mode=0777,dir_mode=0777,uid=user,gid=users,noperm,rw,uid=1002,gid=1002 //192.165.54.18/prj_9330  /home/dongjw/work_dir/work_9330

我正在使用Ubuntu 12.04 64bit

什么会导致此错误?


1
您的工作目录已不存在。键入cd [PATH]您的外壳以转到现有外壳。
David Foerster,2014年

Answers:


7

我在Ubuntu 12.10 64位上通过python子进程使用jshint遇到此错误。

node.js:464
var cwd = process.cwd();
                  ^
Error: ENOENT, no such file or directory
    at Function.resolveArgv0 (node.js:464:23)
    at startup (node.js:51:13)
    at node.js:555:3

原因是因为您从目录下删除或移出目录而无法确定当前目录。

如何判断您是否遇到此问题:

运行命令cd . (如果出现此错误,则说明存在此问题)。

el@apollo:~/foo$ cd .
cd: error retrieving current directory: getcwd: cannot access parent 
directories: No such file or director

您试图将目录更改为当前目录,但不能。

如何重现错误:

jshint受此错误影响。制作一个目录foo,cd进入其中,制作一个名为myjavascript.js

cd /home/el
mkdir foo
cd foo
touch myjavascript.js
jshint myjavascript.js

jshint正确运行,它说没有错误,这是正确的。

打开第二个终端,rm -rf目录/home/el/foo从下面移出。

rm -rf /home/el/foo

jshint myjavascript.js从第一个终端再次运行,您将得到一个错误:

el@apollo:~/foo$ jshint myjavascript.js 

    node.js:464
        var cwd = process.cwd();
                      ^
    Error: ENOENT, no such file or directory
        at Function.resolveArgv0 (node.js:464:23)
        at startup (node.js:51:13)
        at node.js:555:3

目录不见了!即使您用相同的内容替换它,它具有不同的签名并且终端无法恢复,该方法getcwd也无法知道当前目录是什么。

三种解决方案:

终端对当前目录是什么感到困惑,因为当前目录已消失或其签名已更改。请执行以下一项操作来修复它:

  1. 运行命令,cd ..直到停止出现错误。这将终端与文件系统重新同步。然后cd返回您的目录。再试一次。错误消失了。

  2. su youruser在终端使用中,输入密码。刷新并带您回到同一目录。

  3. 关闭并重新打开终端,以清除陈旧的目录签名。或者将讨厌的邮件发送到任何程序(jshint)或无法容忍或从过时的目录签名中恢复的其他数千个程序。


而不是cd ..“经常运行”,您也可以cd ~直接到您的
家庭文件夹

4

我收到相同的错误,但是我试图在主目录中运行脚本。我解决了:

pushd ~ 1>/dev/null; pwd ; popd 1>/dev/null

这会将我移到我的主目录,然后运行pwd(但是您可以运行任何您喜欢的东西),然后popd将我移回我所在的位置。如果您不需要后退,

cd; pwd

足以解决我的问题,(希望对您有帮助。)

编辑 这些1>/dev/null部分是可选的;我添加它们,以便可以在shell脚本中使用上面的行而无需在这种情况下不需要额外的输出。


这样我就可以将其粘贴到bash脚本中,而不会得到我不想要的输出。我尝试添加尽可能完整的答案,因为当我找到command-fu时,我很容易将其削减到我的需要,并且我希望使用此功能的任何人都像我一样。
Alexx Roche 2013年

好的,我已经添加了一个编辑说明,(尽管有些人可能会觉得我正在教他们吮吸鸡蛋-那些知道不需要编辑的人,那些不知道可以进行粘贴或查找的人)函数与原始问题没有直接关系。)
Alexx Roche 2013年

可悲的是:(
Braiam

-1

甚至我在python virtualenv中也遇到了同样的问题。通过简单的重新启动即可纠正

sudo shutdown -r now

2
我认为您无需重新启动即可修复它,只需按照此处的其他答案操作,并cd转到现有目录即可。
wjandrea

如果您有新问题,请单击“ 提问”按钮提问。如果它有助于提供上下文,请包括此问题的链接。- 评论
-N0rbert

1
@ N0rbert这不是一个新问题,显然是尝试回答并提供恕我直言的有效(尽管肯定不是最佳)解决方案。
字节指挥官

@ByteCommander我误点击了此按钮,很抱歉。
N0rbert '18年
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.