【发布时间】:2012-09-09 11:21:01
【问题描述】:
在调用shell 命令时,Jenkins 使用什么 shell?我在 Linux 机器上运行 Jenkins。
【问题讨论】:
标签: jenkins
在调用shell 命令时,Jenkins 使用什么 shell?我在 Linux 机器上运行 Jenkins。
【问题讨论】:
标签: jenkins
我尝试通过将以下 shell 命令添加到我的 Jenkins 构建来打印 env。
env
输出显示我的实例的 SHELL 设置为 tcsh。
【讨论】:
来自“执行外壳”部分的帮助/问号图标:
运行一个 shell 脚本(默认为 sh,但这是可配置的) 构建项目。
如果您转到管理 Jenkins --> 配置系统,您将找到一个选项(称为“Shell 可执行文件”)来设置您希望您的 shell 脚本使用的 shell 的名称或绝对路径...
对于我没有配置此选项的系统...它使用 bash!
【讨论】:
就像在任何 shell 脚本文件中一样,只需在脚本的第一行声明你的 shell:
#!/bin/bash
【讨论】:
您可以使用 Jenkins > 管理 Jenkins > 配置系统 > Shell 可执行文件 设置默认 shell。
对于使用不同于默认 shell 的作业,请使用 shebang 开始 Execute 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 上测试了上述内容
【讨论】:
Jenkins 默认在PATH 环境变量中查找sh,但是结果(例如/bin/sh)可能指向不同的shell。例如,在 Ubuntu 6.10 或更高版本上,/bin/sh 是 Dash 的符号链接。
所以对于“Jenkins 中使用什么外壳......”这个问题,这取决于。为避免不确定性,您可以:(以 Bash 为例)
/bin/bash。 (系统范围的配置)#!/usr/bin/env bash(特定于工作)【讨论】: