Mac Monterey下Bash脚本无法同时启动React与Firebase模拟器求助
解决Mac下Bash脚本无法同时启动多终端服务的问题
修正后的start.sh脚本
#!/bin/bash # 启动React前端服务(新开终端) open -a Terminal --args bash -c "cd $(pwd)/../frontend/my_app && npm start; exec bash" # 启动Firebase云函数模拟器(新开终端) open -a Terminal --args bash -c "cd $(pwd)/../backend/functions && firebase emulators:start --only functions; exec bash"
关键说明
- 路径处理:
$(pwd)获取当前start.sh所在的general目录路径,通过../跳转到项目根目录,再进入对应子目录,确保命令在正确的工作目录执行。 - 新开终端执行:
open -a Terminal --args bash -c "..."会启动新的Terminal窗口,并在其中执行引号内的命令,避免单终端阻塞问题。 - 保持终端存活:命令末尾的
exec bash用于防止服务启动后终端自动关闭,方便查看实时运行日志。 - 脚本权限配置:执行前需要给脚本添加可执行权限:
chmod +x start.sh
替代方案(若使用iTerm2)
如果你的默认终端是iTerm2,只需把open -a Terminal替换为open -a iTerm即可:
#!/bin/bash open -a iTerm --args bash -c "cd $(pwd)/../frontend/my_app && npm start; exec bash" open -a iTerm --args bash -c "cd $(pwd)/../backend/functions && firebase emulators:start --only functions; exec bash"
内容的提问来源于stack exchange,提问作者Giulio Serra
相关产品推荐
相关产品推荐

