cygwin64 中的退出代码 127

cygwin64 中的退出代码 127

经过多年的无问题,突然我的安装中的几个程序cygwin64在 64 位 Windows 7 Professional 上无法运行,而是立即退出,代码 127,哪个在 Bash 中通常表示“未找到命令”。特别是vim,、emacs和等程序甚至clear会表现出这种行为,而其他程序如、、vi和似乎运行正常。echotouchdate

起初,我猜测上一轮软件包更新可能出了问题,因此我使用 cygwin 安装程序的命令行界面,但似乎并没有什么帮助。

据我所知,受影响的程序根本无法运行。甚至--version程序的标志都不起作用,这让我认为 cygwin 本身或常见依赖项可能有问题:

$ vim --version
$ echo $?
127

(如果有帮助的话,我可以提供各种软件包的具体版本号,但由于这个问题在最近的更新之前和之后都存在,所以我怀疑它有多大意义。)

我仔细检查了我的 PATH 变量,它以 开头/usr/local/bin:/usr/bin:,正如预期的那样。这些程序中是否存在一些新的依赖项,而 cygwin 的包管理器无法正确解析这些依赖项,或者这些依赖项可能未自动添加到我的 PATH 中?

我是否遗漏了其他明显的东西?

答案1

在我对 cygwin 进行更新后,也发生了同样的事情,vim 无法启动,代码为 127。添加 clear.exe 也没有任何作用。

strace vim +q给出 sigalstack 无法位于 dll cygwin1.dll 中 cygwin 邮件列表中的友好人士说我的更新可能没有完成,因为我没有关闭所有 cygwin 进程。事实上,我运行了 sshd 和 cygrunsrv,我关闭了它们,然后重新安装了 cygwin base(进入设置并手动选择重新安装 cygwin base),这样就解决了所有问题。祝朋友们好运

答案2

看起来这clear就是罪魁祸首。我通过尝试以其完整路径运行它来诊断这个问题:

$ /usr/bin/clear
$ echo $?
127

然后我往里面看了看/usr/bin,发现clear不知为何完全失踪了。 因此,使用 cygwin 的 GUI 设置,我强制重新安装ncurses包含的包clear,现在一切似乎都正常了。

按理说,vimemacs都利用了clear,因此问题也会波及到这些程序。

答案3

对于从 Google 来到这里的任何人来说 - 我都有过这样的经历:程序在 Cygwin(特别是 gcc)上退出时出现错误代码 127。

问题原来是我安装到了一个带有空格的路径中。

如果您使用 GUI 安装,系统会就此发出警告。我通过命令行进行安装,没有此类警告阻止我进行安装。

相关内容