shell
コマンドを呼び出すときにJenkinsで使用されるシェルは何ですか?LinuxマシンでJenkinsを実行しています。
5 に答える
「シェルの実行」セクションのヘルプ/疑問符アイコンから:
プロジェクトをビルドするためのシェルスクリプト(デフォルトはshですが、これは構成可能です)を実行します。
[Jenkinsの管理]->[システムの構成]に移動すると、シェルスクリプトで使用するシェルの名前または絶対パスを設定するオプション(「シェル実行可能ファイル」と呼ばれます)が表示されます...
このオプションを設定していない私のシステムでは...bashを使用しています!
他のシェルスクリプトファイルと同じように、スクリプトの最初の行でシェルを宣言するだけです。
#!/bin/bash
Jenkinsはデフォルトsh
でPATH
環境変数を検索しますが、結果(たとえば/bin/sh
)は異なるシェルを指している可能性があります。たとえば、Ubuntu 6.10以降で/bin/sh
は、Dashへのシンボリックリンクです。
したがって、「Jenkinsでどのシェルが使用されているか...」という質問については、状況によって異なります。不確実性を回避するために、次のことができます:(例としてBashを取り上げます)
- [Jenkinsの管理]>[システムの構成]>[シェル]>[シェル実行可能ファイル]でシェル実行可能ファイルを明示的に構成します
/bin/bash
。(システム全体の構成) - シバンラインを使用して、インタプリタを使用する必要があることを指定します。たとえば、
#!/usr/bin/env bash
(ジョブに固有)
Jenkinsビルドに次のシェルコマンドを追加して、envを出力してみました。
env
出力は、SHELLがtcsh
私のインスタンスに対して設定されていることを示していました。
デフォルトのシェルは、Jenkins>Jenkinsの管理>システムの構成>シェル実行可能ファイルを使用して設定できます。
デフォルトとは異なるシェルを使用するジョブの場合、次のようなシバンでシェルビルドの実行ステップを開始します。
#!/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 ""
上記をJenkins1.625.3でテストしました