Mac Zsh环境下执行prlctl exec遇NUL权限拒绝问题求助
解决Parallels中prlctl exec调用Windows程序的权限错误问题
问题根源
你遇到的zsh: permission denied: NUL错误,是因为Mac的zsh shell会优先解析命令里的重定向符号(>、<),而NUL是Windows系统的空设备,Mac系统里没有这个设备文件,所以zsh尝试写入NUL时触发权限错误。
解决方案
需要把包含重定向的完整Windows命令传给虚拟机内的Windows shell(cmd或PowerShell)执行,避免Mac shell提前解析重定向符号:
方法1:用Windows cmd执行基础命令
用cmd /c包裹Windows侧的完整命令,并用引号把整个命令串起来,让prlctl将其完整传递给虚拟机:
prlctl exec "cmd /c myProgram.exe argument1 >NUL <NUL &"
cmd /c:告诉Windows cmd执行后续命令后退出>NUL <NUL:在Windows环境内将输入输出重定向到空设备,避免终端输出干扰&:让程序在Windows后台运行(不需要后台可去掉)
方法2:关联目标文件MyFileThatIRun.txt
要让myProgram.exe打开目标文件,需确保文件能被Windows虚拟机访问:
- 先通过Parallels的文件共享功能,把Mac上的文件目录共享给Windows虚拟机
- 在命令里使用Windows格式的文件路径(比如共享目录在Windows里映射为
Z:盘,路径就是Z:\MyFileThatIRun.txt) - 完整命令示例:
prlctl exec "cmd /c myProgram.exe argument1 Z:\MyFileThatIRun.txt >NUL <NUL &"
方法3:使用PowerShell执行命令
如果习惯用PowerShell,Windows里的空设备对应$null,命令格式如下:
prlctl exec "powershell -Command 'myProgram.exe argument1 Z:\MyFileThatIRun.txt >$null <$null &'"
验证步骤
- 先在Windows虚拟机内手动打开cmd,执行
myProgram.exe argument1 MyFileThatIRun.txt >NUL <NUL &,确认程序能正常运行 - 再把这个命令用上述方法通过
prlctl exec在Mac终端执行,确保路径和参数正确
内容的提问来源于stack exchange,提问作者Howard
相关产品推荐
相关产品推荐

