调用shell
命令时,Jenkins使用了什么shell?我在Linux机器上运行Jenkins。
答案 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为例)
/bin/bash
。 (全系统配置)#!/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