执行bash命令调用Terminal打开g++编译文件报错的原因与解决方法
问题分析与解决:'1' cannot be opened because '(null)' is not allowed to open documents in Terminal
报错原因
open -a Terminal.app是用来让Terminal.app打开文档类文件(比如shell脚本、文本文件)的工具,但你生成的1是g++编译出的二进制可执行文件,Terminal并不将这类文件视为可直接打开的“文档”。- macOS应用权限机制中,Terminal.app未被配置为可打开二进制可执行文件的应用,系统无法识别该文件类型对应的权限标识,因此报错信息里显示
(null)。
解决方法
方法1:直接执行可执行文件(最简便)
先确保文件拥有执行权限:
chmod +x 1
随后在终端中运行:
./1
方法2:通过open命令让Terminal.app启动并运行该文件
如果需要强制调用Terminal.app来执行这个可执行文件,可以传递启动参数让Terminal执行运行命令:
bash -c "open -a Terminal.app --args -e 'cd $(pwd); ./1'"
这里--args用来给Terminal.app传递启动指令,-e后接的命令会在Terminal启动时自动执行:先切换到当前文件所在目录,再运行可执行文件。
方法3:直接在iTerm2中执行(无需调用Terminal.app)
既然你已经在iTerm2里操作,完全没必要额外调用Terminal.app,直接执行./1即可完成运行。
内容的提问来源于stack exchange,提问作者Lancdorr
相关产品推荐
相关产品推荐

