sh: 0: getcwd() 失败:没有此文件或目录

sh: 0: getcwd() 失败:没有此文件或目录

我正在尝试在 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 64 位

什么会导致这个错误?

答案1

我在 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,进入该目录,创建一个名为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)或数千个无法容忍或恢复过时目录签名的其他程序发送恶意邮件。

答案2

我遇到了同样的错误,但我试图在主目录中运行一个脚本。我使用以下方法解决了它:

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

这会移动到我的主目录,然后运行pwd(但您可以运行任何您喜欢的程序),然后popd将我移回原来的位置。如果您不需要移回:

cd; pwd

足以解决我的问题。

这些1>/dev/null部分是可选的。我添加它们是为了可以在 shell 脚本中使用上面的行,而无需在本例中不需要的额外输出。

答案3

在您的主目录中运行该命令。
移动到主目录:

cd ~

然后再次运行该命令。这应该有帮助

答案4

我也遇到了同样的问题,但使用 python virtualenv 时,只需简单重启即可解决

sudo shutdown -r now

相关内容