2012-09-17 30 views

Respuesta

36

Desde el botón de ayuda del script: Ejecuta un script de shell (por defecto sh, pero esto es configurable) para construir el proyecto.

Si vas para administrar Jenkins -> Configurar sistema encontrará una opción (llamada "Shell ejecutable") para establecer el nombre o la ruta absoluta a la shell que las secuencias de comandos shell para usar ...

Para mi sistema sin configurar esta opción ... usa bash!

+0

Hmm, no estoy viendo esto en la versión actual de Jenkins :( – mdiehl13

+0

Veo el shell por defecto con un jenkins 2.7.4 en CentOS 7.1 es bash (sh en OS es bash), shell por defecto con un jenkins 2.32.1 en Debian 8 docker contenedor es dash (sh en OS es dash). – gaoithe

5

He intentado imprimir el env agregando el siguiente comando de shell a mi compilación de Jenkins.

env 

La salida mostraron que la cáscara se establece en tcsh para mi ejemplo.

+0

$ SHELL es muy poco fiable. Pruebe: ps -p $$ –

1

estoy corriendo Jenkins con RedHat, ya que Jenkins no instala el usuario con un shell por defecto hay que añadir uno cuando al iniciar la sesión como usuarios Jenkins do - Jenkins -s/bin/bash

13

Simplemente declarar su concha en la primera línea del script como lo hace en cualquier archivo de secuencia de comandos shell:

#!/bin/bash 
+1

Esto no funciona. Shell utilizado es siempre el shell predeterminado del usuario * nix que inicia el proceso. – Janfy

+0

Esto funciona para mí , usando una versión reciente de Jenkins a partir de 2016/05. –

+1

@JohnMcGehee ¿Qué versión de jenkins usaste? –

3

puede establecer el shell por defecto usando Jenkins> Administrar Jenkins> ejecutable cáscara.

Para los trabajos que utilizan un shell diferente del predeterminado, iniciar el ejecutar el entorno paso de generación con un tinglado, tales como:

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

command1 
command2 
    ... 

Incluso puede utilizar /usr/bin/env utilizar, por ejemplo, Python:

#!/usr/bin/env python3 

Mira que un espacio no está permitido después de la #!:

#! /usr/bin/tcsh # Wrong 

Esto le dará al error,

java.io.IOException: Cannot run program "" 

probé la anterior sobre Jenkins 1.625.3

1

Jenkins por defecto se ve para sh en la variable PATH medio ambiente, sin embargo, el resultado (por ejemplo, /bin/sh) pueden apuntar a diferentes proyectiles. Por ejemplo, en Ubuntu 6.10 o posterior, /bin/sh es un enlace simbólico a Dash.

Por lo tanto, para la pregunta "qué shell se utiliza en Jenkins ...", depende. Para evitar la incertidumbre, puede: (Bash tomar como ejemplo)

  1. Configure explícitamente ejecutable Shell administran en ejecutable Jenkins> Configurar sistema> Shell> Shell, por ejemplo, /bin/bash.(Configuración de todo el sistema)
  2. Utilice la línea tinglado para especificar el intérprete debe ser utilizado, por ejemplo, #!/usr/bin/env bash (específico para un trabajo)
Cuestiones relacionadas