詹金斯使用什么外壳?

时间:2012-09-17 08:54:38

标签: jenkins

调用shell命令时,Jenkins使用了什么shell?我在Linux机器上运行Jenkins。

6 个答案:

答案 0 :(得分:54)

从“执行shell”部分的帮助/问号图标:

  

运行shell脚本(默认为sh,但这是可配置的)   建设项目。

如果你去管理Jenkins - >配置系统您将找到一个选项(称为“Shell可执行文件”)来设置您希望shell脚本使用的shell的名称或绝对路径...

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

答案 1 :(得分:23)

只需在脚本的第一行声明shell,就像在任何shell脚本文件中一样:

#!/bin/bash

答案 2 :(得分:7)

我尝试通过将以下shell命令添加到我的Jenkins构建来打印env。

env

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

答案 3 :(得分:6)

Jenkins默认在sh环境变量中查找PATH,但结果(例如/bin/sh)可能指向不同的shell。例如,在Ubuntu 6.10或更高版本中,/bin/sh是Dash的符号链接。

所以对于“Jenkins中使用了什么shell ......”的问题,这取决于。为避免不确定性,您可以:(以Bash为例)

  1. 在Manage Jenkins>中明确配置shell可执行文件。配置系统>壳牌> Shell可执行文件,例如/bin/bash。 (全系统配置)
  2. 使用shebang行指定应使用的解释器,例如#!/usr/bin/env bash(特定于作业)

答案 4 :(得分:4)

您可以使用 Jenkins>设置默认shell。管理Jenkins>配置系统> Shell可执行文件

对于使用与默认值不同的shell的作业,使用shebang开始执行shell 构建步骤,例如:

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

command1
command2
   ...

您甚至可以使用/usr/bin/env来使用Python:

#!/usr/bin/env python3

请注意#!之后

之后不允许空格
#! /usr/bin/tcsh    # Wrong

这将给出错误

java.io.IOException: Cannot run program ""

我在Jenkins 1.625.3上测试了上述内容

答案 5 :(得分:1)

我正在使用Redhat运行jenkins,因为jenkins没有安装带有默认shell的用户,当你以jenkins用户身份登录时必须添加一个     su - jenkins -s / bin / bash