You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Bash脚本切换目录后执行mvn命令启动Java Maven项目

Bash脚本切换目录执行Maven命令的解决方案

错误原因

  1. exec命令的作用是将当前shell进程替换为指定的外部可执行程序,而cd是Bash内置命令,不属于独立的外部二进制文件,因此exec cd会直接抛出not found错误。
  2. 拆分写法的问题在于未校验cd的执行结果:如果cd因路径不存在、权限不足等原因执行失败,后续命令仍会在脚本原始工作目录下运行,自然找不到Maven项目。

正确实现

基础写法(推荐)

#!/bin/bash
# 切换到目标目录,切换失败直接退出脚本
cd /var/script/myproject/java || exit 1
# 直接执行Maven命令
mvn exec:java

保留exec的写法

如果需要用exec将shell进程替换为Maven进程(方便信号传递、进程管理等场景),使用如下写法:

#!/bin/bash
cd /var/script/myproject/java || exit 1
exec mvn exec:java

说明

  • 脚本开头的#!/bin/bash用于指定解释器,避免默认用不兼容的shell执行脚本
  • || exit 1逻辑保证cd执行失败时直接终止脚本,不会在错误目录执行后续操作
  • cd是在当前shell进程内执行的,切换成功后脚本的工作目录就会变为目标路径,后续所有命令都会在该目录下运行

注意事项

  • 确认/var/script/myproject/java路径真实存在,且运行脚本的用户对该路径有可读、可执行权限
  • 若执行时提示找不到mvn命令,可以替换为mvn的绝对路径,例如/usr/bin/mvn exec:java

内容的提问来源于stack exchange,提问作者A. Vreeswijk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:45:04