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

Jenkinsfile中sh步骤仍调用csh,如何指定以BASH执行?

问题分析与解决办法

语法问题

你加的#!/bin/bash shebang没生效,核心原因是Jenkins的sh步骤默认使用服务账户svc_user的默认shell(即csh)来启动脚本。csh会把首行的#!/bin/bash当成普通注释处理,不会触发解释器切换,所以整个脚本还是在csh环境中执行,输出的$SHELL自然是csh的路径。

两种可行解决办法

办法1:用bash直接调用脚本内容

让csh仅负责启动bash,实际命令由bash执行,写法如下:

sh '''
bash -c '
  echo "SHELL = $SHELL"
  which git
  # 其他命令
'
'''

办法2:指定sh步骤的shell参数

利用Jenkins sh步骤的shell参数,直接指定用/bin/bash作为该步骤的解释器,写法如下:

sh label: 'some_stage', shell: '/bin/bash', script: '''
  echo "SHELL = $SHELL"
  which git
  # 其他命令
'''

内容的提问来源于stack exchange,提问作者AKS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 10:32:02