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

Jenkins Scripted Pipeline 中如何修改默认使用的shell

Jenkins Scripted Pipeline 切换默认 Shell 方案

你当前需要将Scripted Pipeline默认的/usr/local/bin/tcsh切换为/bin/csh,可根据使用场景选择以下任意一种方案:

方案1:仅指定单步sh使用目标shell(临时生效)

只需要单个执行步骤使用/bin/csh时,直接在sh脚本头部加shebang声明即可,优先级最高,不会影响其他步骤:

node {
    stage('Clean'){
        sh '''#!/bin/csh
            echo "当前使用shell为:$0"
            # 此处写你的csh逻辑
        '''
    }
}

方案2:当前Pipeline全局生效

如果需要整个Pipeline的所有sh步骤默认都使用/bin/csh,在pipeline开头设置SHELL环境变量即可:

node {
    // 全局指定当前Pipeline默认shell为/bin/csh
    env.SHELL = '/bin/csh'
    stage('Clean'){
        echo "${SHELL}" // 输出为/bin/csh
        sh 'echo $0' // 执行时默认使用/bin/csh
    }
}

该设置优先级高于节点全局配置,仅对当前Pipeline生效。

方案3:Jenkins节点全局生效(永久生效)

如果需要对应Agent节点上所有的Pipeline任务默认都使用/bin/csh,可以在节点配置中修改:

  • 登录Jenkins后台,进入「Manage Jenkins」→「Manage Nodes and Clouds」
  • 找到你当前执行任务的目标节点,点击「配置」
  • 勾选「Node Properties」下的「Environment variables」,新增一条环境变量:
    • 键:SHELL
    • 值:/bin/csh
  • 保存配置后重启对应节点的Agent进程即可生效。

注意事项

  • 配置前请先确认目标Agent节点上已经存在你指定的shell路径,可以登录节点执行which csh确认路径是否正确,避免执行时报错
  • 优先级排序:sh脚本内的shebang > Pipeline内设置的env.SHELL > 节点全局配置的SHELL变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:06:03