我正在尝试在 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
无法知道当前目录是什么。
三种解决方案:
终端无法识别当前目录,因为该目录已消失或其签名已更改。请执行以下操作之一来修复此问题:
运行该命令
cd ..
,直到不再出现错误。这将重新同步终端与文件系统。然后 cd 返回到您的目录。再试一次。错误消失。在终端中使用
su youruser
,输入密码。它会刷新并带您回到同一目录。关闭并重新打开终端,清除过时的目录签名。或者向任何程序(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