Gab*_*tin 2 bash android windows-10 windows-subsystem-for-linux
我从 Windows 获得了添加 bash 的最新更新,我试图通过它编写 Android 模拟器的执行脚本;但是,bash 不考虑 Windows 的 Path 变量。
另外,我尝试手动执行 adb 并得到:
andtest@DESKTOP:/mnt/c/Android/sdk/platform-tools$ exec ./adb.exe
bash: /mnt/c/Android/sdk/platform-tools/adb.exe: cannot execute binary file: Exec format error
Run Code Online (Sandbox Code Playgroud)
有什么我在这里想念的吗?我想将此 Windows 计算机用作 Android 的测试服务器。
TL;DR:微软最初并没有让运行 Windows 应用程序成为可能。
自 2016 年 10 月 19 日发布的 Insider Preview 版本 14951 起,您可以在 Windows (WSL) 下的 Ubuntu 下从 Bash 运行本机 Windows 程序
现在可以直接从 WSL 命令行调用 Windows 二进制文件。这使用户能够以前所未有的方式与其 Windows 环境和系统进行交互。举个简单的例子,现在用户可以运行以下命令:
$ export PATH=$PATH:/mnt/c/Windows/System32 $ notepad.exe $ ipconfig.exe | grep IPv4 | cut -d: -f2 $ ls -la | findstr.exe foo.txt $ cmd.exe /c dir
https://msdn.microsoft.com/en-us/commandline/wsl/release_notes#build-14951
公告说
适用于 Linux 的 Windows 子系统:今天我们很高兴地宣布 WSL 的两个重大更新!
官方 Ubuntu 16.04 支持。Ubuntu 16.04 (Xenial) 安装在 Windows 实例上的所有新 Bash 上,从 build 14951 开始。这取代了 Ubuntu 14.04 (Trusty)。 现有的用户实例不会自动升级。Windows Insider 程序上的用户可以使用 do-release-upgrade 命令手动从 14.04 升级到 16.04。
Windows / WSL 互操作性。用户现在可以直接从 WSL 命令提示符启动 Windows 二进制文件。这是我们用户在 WSL 用户语音页面上的第一个请求。
(我的重点)
消息
无法执行二进制文件:Exec 格式错误
这意味着 Bash 确信 adb.exe 是错误的执行文件类型。
要找出原因,请尝试使用:
file /mnt/c/Android/sdk/platform-tools/adb.exe
Run Code Online (Sandbox Code Playgroud)
例如:
$ pwd
/mnt/c/Windows/System32
$ ./notepad.exe
bash: ./notepad.exe: cannot execute binary file: Exec format error
$ file notepad.exe
notepad.exe: PE32+ executable (GUI) x86-64, for MS Windows
Run Code Online (Sandbox Code Playgroud)
请注意,Microsoft最初的 WSL 目标是
使用 Bash,您可以运行命令行 Linux 工具和应用程序。
注意不包括
我相信微软的 Windows Subsystem for Linux (WSL) 目前只支持 64 位 ELF 二进制文件,不支持 32 位 ELF 二进制文件。
此外,从这个问题来看,在撰写此答案时, WSL 似乎不支持从 Bash 中运行 Windows 可执行文件。
这已由HowtoGeek证实
不幸的是,无法从 Bash 脚本或 Bash shell 中实际启动 Windows 程序或运行 Windows 命令。但是,您可以将 Bash 命令合并到批处理脚本或 PowerShell 脚本中
如果你看看微软是如何做到这一点的,你会发现这Bash.exe
是一个原生的 Windows 控制台模式应用程序,我相信它基本上充当了一个非常瘦的前端,它与一个未修改的 前端进行通信,该前端/bin/bash
执行所有实际的命令解释和执行。
WSL ...主要包括:
- 处理 Linux 实例生命周期的用户模式会话管理器服务
- 通过转换 Linux 系统调用来模拟 Linux 内核的 Pico 提供程序驱动程序(lxss.sys、lxcore.sys)
- 托管未修改用户模式 Linux 的Pico 进程(例如/bin/bash)
- WSL 概述
由于未修改的 /bin/bash 不希望能够运行不是本机 Linux “ELF”二进制文件的程序,因此它反对 Windows “PE”二进制文件。
我当然不想在 WSL 下运行 WINE 的兔子洞。我建议你也避免这个想法。
查看项目 cbwin
从“Windows 上的 Ubuntu 上的 Bash”(WSL)启动 Windows 程序
主要特点:
- 控制台中的 Win32 命令行工具,从 WSL 调用
- 带有重定向到 WSL 的 Win32 命令行工具(stdin/stdout/stderr 到或从管道/文件)
- 暂停/恢复传播(Ctrl-Z 暂停 Win32 进程,fg 恢复它们)
- 退出代码传播
- 启动“分离的”GUI Windows 程序(使用 cmd 的开头)
归档时间: |
|
查看次数: |
9280 次 |
最近记录: |