¿Qué shell se usa en Jenkins cuando se llama al comando shell
? Estoy ejecutando Jenkins en una máquina Linux.¿Qué shell usa jenkins?
Cualquier ayuda es apreciada.
¿Qué shell se usa en Jenkins cuando se llama al comando shell
? Estoy ejecutando Jenkins en una máquina Linux.¿Qué shell usa jenkins?
Cualquier ayuda es apreciada.
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!
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.
$ SHELL es muy poco fiable. Pruebe: ps -p $$ –
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
Simplemente declarar su concha en la primera línea del script como lo hace en cualquier archivo de secuencia de comandos shell:
#!/bin/bash
Esto no funciona. Shell utilizado es siempre el shell predeterminado del usuario * nix que inicia el proceso. – Janfy
Esto funciona para mí , usando una versión reciente de Jenkins a partir de 2016/05. –
@JohnMcGehee ¿Qué versión de jenkins usaste? –
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
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)
/bin/bash
.(Configuración de todo el sistema)#!/usr/bin/env bash
(específico para un trabajo)
Hmm, no estoy viendo esto en la versión actual de Jenkins :( – mdiehl13
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