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
相关产品推荐
相关产品推荐

