2012-09-17 61 views

回答

36

从脚本的帮助按钮: 运行一个用于构建项目的shell脚本(默认为sh,但这是可配置的)。

如果你去管理詹金斯 - >配置系统,你会发现一个选项(称为“壳牌可执行文件”)的名称或绝对路径设置为你希望你的shell脚本使用shell ...

对于我的系统没有配置此选项...它使用bash!

+0

嗯,我没有看到当前版本的詹金斯:( – mdiehl13

+0

我看到在CentOS 7.1上的jenkins 2.7.4的默认shell是bash(sh在OS上是bash),默认shell在Debian 8 docker容器上使用jenkins 2.32.1是破折号(在操作系统上是sh是破折号) – gaoithe

5

我试图通过将下面的shell命令添加到我的Jenkins版本来打印env。

env 

输出显示SHELL被设置为tcsh我的实例。

+0

$ SHELL是非常不可靠。尝试: ps -p $$ –

1

我跑在Redhat詹金斯,詹金斯因为不符合你必须添加一个默认的外壳安装的用户,当您在为用户詹金斯苏 日志 - 詹金斯-s /斌/庆典

13

简单地声明你的脚本的第一行的外壳,你在任何shell脚本文件做:

#!/bin/bash 
+1

这不起作用 使用的shell始终是启动该进程的* nix用户的默认外壳 – Janfy

+0

这适用于我,使用最新版本的Jenkins截至2016/05。 –

+1

@JohnMcGehee你使用的是什么版本的jenkins? –

3

您可以设置使用詹金斯>默认的shell管理詹金斯>外壳可执行

对于使用不同的外壳从默认的工作,开始执行shell构建步骤与家当,如:

#!/usr/bin/tcsh -e -x 

command1 
command2 
    ... 

你甚至可以使用/usr/bin/env使用,也就是说,巨蟒:

#!/usr/bin/env python3 

当心的是,#!后的空间不允许

#! /usr/bin/tcsh # Wrong 

这会给该错误,

java.io.IOException: Cannot run program "" 

我测试上述上詹金斯1.625.3

1

詹金斯默认查找shPATH环境变量,然而,结果(例如/bin/sh)可能指向不同的壳。例如,在Ubuntu 6.10或更高版本中,/bin/sh是Dash的符号链接。

因此,对于“Jenkins中使用什么外壳......”这个问题,这取决于。为了避免不确定,可以:(取击作为一个例子)

  1. 显式配置壳可执行在管理詹金斯>配置系统>贝壳>贝壳可执行,例如,/bin/bash。(系统范围的配置)
  2. 使用家当行指定的解释应该使用,例如,#!/usr/bin/env bash(具体到工作)