gpt4 book ai didi

java - 为什么有些 Cygwin 文件不可执行?

转载 作者:行者123 更新时间:2023-12-01 19:42:28 29 4
gpt4 key购买 nike

我正在尝试从 Java 应用程序在 Windows 上执行 Cygwin 命令。在 cygwin 的 bin 中,我注意到一些文件是应用程序类型(.exe),而其他文件(如 zcat 和 zless)没有扩展名,只是文件类型。

我已将 bin 添加到 Windows PATH,并且似乎只能从 cmd 执行 .exe 文件。下面的代码有效。

ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "ls");
Process p = pb.start();

我想使用 zcat 和 zless 之类的东西,但它们不可执行,并且 cmd 提示“zcat”不被识别为内部或外部命令,可运行的程序或批处理文件。

如果我手动将文件更改为 .exe,则会弹出错误消息,指出由于与 64 位版本的 Windows 不兼容,zcat 无法启动或运行。我已经安装了 64 位版本的 cygwin (setup-x86_64)。为什么 cygwin 的 bin 不是全部可执行?

最佳答案

大多数 cygwin 程序不是二进制程序,而是脚本程序。命令file可以为您提供文件类型的描述:

$ file zcat
zcat: POSIX shell script, ASCII text executable

同时

$ file cat
cat: PE32+ executable (console) x86-64, for MS Windows

读取zcat的前5行

$ head -n 5 zcat
#!/bin/sh
# Uncompress files to standard output.

# Copyright (C) 2007, 2010-2016 Free Software Foundation, Inc.

我们在第一行看到#!,它表示这是一个要由/bin/sh 解释器。

在其他情况下我们可以有

$ head -n5 2to3
#!/usr/bin/python2.7.exe
import sys
from lib2to3.main import main

sys.exit(main("lib2to3.fixes"))

so 2to3 是一个 python 2.7 脚本

关于java - 为什么有些 Cygwin 文件不可执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54857346/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com