Mac OSX中open -a Terminal传递程序参数失效问题求助
解决macOS中
open -a Terminal传递参数给程序的问题 你遇到的问题根源在于open命令的默认行为:它会把命令行中-a Terminal之后的内容都当作要打开的文件路径,而非传递给Terminal的执行参数。不管是分开写proxy 8000还是转义空格写成proxy\ 8000,open都会把它们识别为独立的文件(或单个带空格的文件名),自然找不到对应的文件。
要正确实现"用Terminal打开并运行带参数的proxy程序",需要借助open的--args选项,它会把后续所有内容传递给Terminal作为启动参数,再结合shell命令来执行你的程序。具体命令如下:
open -a Terminal --args /bin/bash -c "./proxy 8000"
细节说明:
--args:告诉open,后面的内容都是要传递给Terminal.app的参数,而非open自身的参数或文件路径。/bin/bash -c:指定用bash shell执行后面的命令字符串(如果你的默认shell是zsh,可以换成/bin/zsh -c)。"./proxy 8000":这是shell要执行的完整命令,包含你的程序路径和端口参数。如果proxy不在当前工作目录,记得替换成绝对路径(比如/Users/yourname/path/to/proxy 8000)。
如果希望程序运行结束后自动关闭Terminal窗口,可以在命令末尾加上; exit:
open -a Terminal --args /bin/bash -c "./proxy 8000; exit"
内容的提问来源于stack exchange,提问作者Willy
相关产品推荐
相关产品推荐

