詹金斯使用什么外壳?

Pab*_*mer 54 jenkins

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

sdm*_*_gr 61

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

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

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


Nic*_*oub 25

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

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)

  • 这不起作用.使用的Shell始终是启动该进程的*nix用户的默认shell. (5认同)
  • 请注意,#! 后面不允许有空格。 (4认同)

Pab*_*mer 8

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

env
Run Code Online (Sandbox Code Playgroud)

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

  • 众所周知,$ SHELL是不可靠的。尝试:ps -p $$ (4认同)

Jer*_*Kao 8

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

因此,对于"詹金斯使用什么外壳......"的问题,这取决于.为避免不确定性,您可以:(以Bash为例)

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


Joh*_*hee 6

您可以使用Jenkins > Manage Jenkins > Configure System > Shell executable设置默认 shell 。

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

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

command1
command2
   ...
Run Code Online (Sandbox Code Playgroud)

你甚至/usr/bin/env可以使用,比如说,Python:

#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)

请注意,后面不允许有空格#!

#! /usr/bin/tcsh    # Wrong
Run Code Online (Sandbox Code Playgroud)

这将给出错误,

java.io.IOException: Cannot run program ""
Run Code Online (Sandbox Code Playgroud)

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