2012-09-17 60 views

回答

36

從腳本的幫助按鈕: 運行一個用於構建項目的shell腳本(默認爲sh,但這是可配置的)。

如果你去管理詹金斯 - >配置系統,你會發現一個選項(稱爲「殼牌可執行文件」)的名稱或絕對路徑設置爲你希望你的shell腳本使用shell ...

對於我的系統沒有配置此選項...它使用bash!

+0

嗯,我沒有看到當前版本的詹金斯:( – mdiehl13

+0

我看到在CentOS 7.1上的jenkins 2.7.4的默認shell是bash(sh在OS上是bash),默認shell在Debian 8 docker容器上使用jenkins 2.32.1是破折號(在操作系統上是sh是破折號) – gaoithe

5

我試圖通過將下面的shell命令添加到我的Jenkins版本來打印env。

env 

輸出顯示SHELL被設置爲tcsh我的實例。

+0

$ SHELL是非常不可靠。嘗試: ps -p $$ –

1

我跑在Redhat詹金斯,詹金斯因爲不符合你必須添加一個默認的外殼安裝的用戶,當您在爲用戶詹金斯蘇 日誌 - 詹金斯-s /斌/慶典

13

簡單地聲明你的腳本的第一行的外殼,你在任何shell腳本文件做:

#!/bin/bash 
+1

這不起作用 使用的shell始終是啓動該進程的* nix用戶的默認外殼 – Janfy

+0

這適用於我,使用最新版本的Jenkins截至2016/05。 –

+1

@JohnMcGehee你使用的是什麼版本的jenkins? –

3

您可以設置使用詹金斯>默認的shell管理詹金斯>外殼可執行

對於使用不同的外殼從默認的工作,開始執行shell構建步驟與家當,如:

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

command1 
command2 
    ... 

你甚至可以使用/usr/bin/env使用,也就是說,巨蟒:

#!/usr/bin/env python3 

當心的是,#!後的空間不允許

#! /usr/bin/tcsh # Wrong 

這會給該錯誤,

java.io.IOException: Cannot run program "" 

我測試上述上詹金斯1.625.3

1

詹金斯默認查找shPATH環境變量,然而,結果(例如/bin/sh)可能指向不同的殼。例如,在Ubuntu 6.10或更高版本中,/bin/sh是Dash的符號鏈接。

因此,對於「Jenkins中使用什麼外殼......」這個問題,這取決於。爲了避免不確定,可以:(取擊作爲一個例子)

  1. 顯式配置殼可執行在管理詹金斯>配置系統>貝殼>貝殼可執行,例如,/bin/bash。(系統範圍的配置)
  2. 使用家當行指定的解釋應該使用,例如,#!/usr/bin/env bash(具體到工作)