2010-11-22 15 views
10

¿Hay una manera simple de comprobar si un script se ejecuta en Cygwin. Tenemos una secuencia de comandos que llama a una utilidad que espera que las rutas pasen a ser ventanas, así que si estamos en Cygwin tenemos que convertir las rutas en rutas de Windows.Detección del script shell que se ejecuta en Cygwin

Respuesta

15

Usted puede utilizar la utilidad uname. De uname(1):

-o, sistema --Instrucciones
de impresión del sistema operativo

código Ejemplo:

if [ `uname -o` = "Cygwin" ] 
then 
    # Cygwin specific stuff 
else 
    # Other UNIX (Linux, etc.) specific stuff 
fi 
+3

Pero [uname de OS X (1)] (http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/uname. 1.html) (BSD uname) no admite el indicador '-o'. – ryandesign

+2

Sí, no recomendaría usar '-o' si necesitas ser súper portátil, demasiados sabores de * nix no lo reconocen. Alguna combinación de '-s' y' -r' debería hacer el truco, y esas banderas han existido desde el principio de los tiempos. –

2

comprobar la salida de uname utilidad

+0

+1 'uname -o' es más específica, aunque –

1

Combinando algunos de los comentarios y la eliminación de resultados acentos abiertos en desuso en la:

#!/bin/bash 
OS_NAME=$(uname -s) 
OS_NAME=${OS_NAME:0:6} 

if [[ "$OS_NAME" = "CYGWIN" ]] 
then 
    # Cygwin specific stuff 
else 
    # Other UNIX (Linux, etc.) specific stuff 
fi 
3

Esto funciona con ksh y bash.

#!/bin/ksh 
case "$(uname -s)" in 
    CYGWIN*) echo This is Cygwin ;; 
    *) echo This is not Cygwin ;; 
esac 
Cuestiones relacionadas