Shell脚本检测是否在Cygwin中运行

11
有没有一种简单的方法可以检查脚本是否在Cygwin中运行。我们有一个脚本调用一个实用程序,该实用程序期望传递的路径为Windows格式,因此如果我们在Cygwin中,我们必须将路径转换为Windows格式。
4个回答

15

你可以使用uname实用程序。来自uname(1)

-o,--operating-system
打印操作系统

示例代码:

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

3
但是OS X的uname(1)(BSD uname)不支持-o标志。 - ryandesign
2
是的,如果你需要非常便携的话,我不建议使用“-o”,因为太多版本的*nix不认识它。一些组合使用“-s”和“-r”的标志应该可以解决问题,而这些标志自时间的黎明以来就存在了。 - Ti Strga

3
这适用于ksh和bash。
#!/bin/ksh
case "$(uname -s)" in
    CYGWIN*) echo This is Cygwin ;;
    *) echo This is not Cygwin ;;
esac

2
检查uname实用程序的输出结果。

1

将一些评论结合起来,并去掉已过时的反引号,结果如下:

#!/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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接