Existe-t-il un moyen simple de vérifier si un script s'exécute dans Cygwin? Nous avons un script qui appelle un utilitaire qui s'attend à ce que les chemins passés soient des fenêtres, donc si nous sommes dans Cygwin, nous devons convertir les chemins en chemins Windows.Script Shell détectant l'exécution dans Cygwin
10
A
Répondre
15
Vous pouvez utiliser l'utilitaire uname
. De uname(1):
-o, --Notices système
impression du système d'exploitation
Exemple Code:
if [ `uname -o` = "Cygwin" ]
then
# Cygwin specific stuff
else
# Other UNIX (Linux, etc.) specific stuff
fi
2
vérifier la sortie de uname
utilitaire
+0
+1 'uname -o' est plus spécifique que –
1
En combinant certains des commentaires et la suppression des résultats dans les apostrophes inverses déconseillés:
#!/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
Cela fonctionne avec ksh et bash.
#!/bin/ksh
case "$(uname -s)" in
CYGWIN*) echo This is Cygwin ;;
*) echo This is not Cygwin ;;
esac
Mais [le uname OS X (1)] (http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/uname. 1.html) (BSD uname) ne supporte pas le drapeau '-o'. – ryandesign
Oui, je ne recommanderais pas d'utiliser '-o' si vous avez besoin d'être super portable, trop de saveurs de * nix ne le reconnaissent pas. Une combinaison de '-s' et' -r' devrait faire l'affaire, et ces drapeaux existent depuis l'aube des temps. –