71

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

4

5 回答 5

78

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

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

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

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

于 2012-09-17T11:04:49.560 回答
31

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

#!/bin/bash
于 2015-12-17T09:12:09.023 回答
11

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

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

  1. 在 Manage Jenkins > Configure System > Shell > Shell executable 中显式配置 shell 可执行文件,例如/bin/bash. (系统范围的配置)
  2. 使用 shebang 行指定应使用的解释器,例如,#!/usr/bin/env bash(特定于工作)
于 2016-10-08T00:34:26.980 回答
7

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

env

输出显示 SHELL 已tcsh针对我的实例设置为。

于 2012-09-17T08:56:18.613 回答
6

您可以使用Jenkins > Manage Jenkins > Configure System > Shell executable设置默认 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 上测试了上述内容

于 2016-06-14T17:44:01.730 回答