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

