如何检查是否在 Cygwin、Mac 还是 Linux 中运行?

2023-11-25

我有一个可在 Windows/Cygwin 以及 Mac 和 Linux 上使用的 shell 脚本。每个版本需要稍微不同的变量。

shell/bash 脚本如何检测它是在 Cygwin、Mac 还是 Linux 中运行?


通常,uname及其各种选项将告诉您正在运行的环境:

pax> uname -a
CYGWIN_NT-5.1 IBM-L3F3936 1.5.25(0.156/4/2) 2008-06-12 19:34 i686 Cygwin

pax> uname -s
CYGWIN_NT-5.1

而且,根据非常有帮助的schot(在评论中),uname -s gives Darwin对于 OSX 和Linux对于 Linux,而我的 Cygwin 给出CYGWIN_NT-5.1。但您可能必须尝试各种不同的版本。

So the bash执行此类检查的代码将类似于:

unameOut="$(uname -s)"
case "${unameOut}" in
    Linux*)     machine=Linux;;
    Darwin*)    machine=Mac;;
    CYGWIN*)    machine=Cygwin;;
    MINGW*)     machine=MinGw;;
    MSYS_NT*)   machine=Git;;
    *)          machine="UNKNOWN:${unameOut}"
esac
echo ${machine}

请注意,我在这里假设您实际上正在运行withinCygWin(bash它的外壳)所以路径应该已经正确设置。正如一位评论者指出的那样,您可以运行bash程序,传递脚本,来自cmd本身,这可能会导致路径未根据需要设置。

If you are这样做时,您有责任确保调用正确的可执行文件(即 CygWin 可执行文件),可能通过事先修改路径或完全指定可执行文件位置(例如,/c/cygwin/bin/uname).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查是否在 Cygwin、Mac 还是 Linux 中运行? 的相关文章

  • 如何在Shell脚本中解析字符串

    我想在 shell 脚本中解析以下字符串 VERSION 2 6 32 54 0 11 def 这里我想得到两个值 first 263254 second 11 我使用以下方法来获取第一个值 first expr substr VERSIO
  • 在 cygwin 和 powershell 中查看不同的 gem 列表

    我用的是gem listpowershell 和 cygwin 中的命令都显示不同的 gem 列表 Cygwin 显示 LOCAL GEMS bundler 1 2 3 json 1 7 5 minitest 2 12 1 rake 0 9
  • sed/awk/bash 用外部文件内容替换两个字符串之间的文本

    我正在编写一个脚本 命令 它将采用 inputFile1 在其中查找特定的开始和结束字符串 并替换它们之间的所有文本 包含 inputFile2 的完整内容 理想情况下 但不是强制性的 这应该不需要转义特殊字符即可工作 因此我可以将字符串放
  • 这种 bash 文件名提取技术有何用途?

    我有一部分 bash 脚本正在获取不带扩展名的文件名 但我试图了解这里到底发生了什么 是做什么用的 有人可以详细说明 bash 在幕后做了什么吗 如何在一般基础上使用该技术 bin bash for src in tif do txt sr
  • shell中如何求数组的长度?

    shell中如何求数组的长度 例如 arr 1 2 3 4 5 我想得到它的长度 在本例中是 5 a 1 2 3 4 echo a 4
  • 在 BASH 脚本中使用字符串作为变量名

    我有以下内容 bin sh n fred bob f n echo f 我需要在替换后执行底线 echo n 有办法做到这一点吗 我刚刚得到 test sh line 8 f bad substitution 在我这边 您可以像这样使用数组
  • 如何将查找结果传递给 CP,以便带空格的文件名起作用 [重复]

    这个问题在这里已经有答案了 我正在尝试将带有特定附件的文件复制到不同的目录 并保留其相对路径 从我调用的原始顶部路径 cp parents find name pdf print new path 我相信这有效 但仅当找到的文件名称中没有空
  • 用于读取文件的 Bash 脚本

    不知道为什么最后一行没有从脚本中删除 bin bash FILENAME 1 while read line do cut d f2 echo line done lt FILENAME cat file 1 test 2 test 3 t
  • 如何退出bash中的所有调用脚本?

    假设我有以下脚本 a sh echo in a if test 1 ne 2 then echo oops exit 1 fi b sh echo in b a sh echo in b 2 运行 b sh 时 如果 a sh 退出 我希望
  • Bash 和双引号传递给 argv

    我重新设计了这个示例以使其简单 但我想做的是在 bash shell 执行它时获取一个嵌套双引号字符串作为单个 argv 值 这是脚本示例 set x command1 key1 value1 key2 value2 key3 value3
  • Python bash 管道

    我想将 python 脚本的输出通过管道传输到 bash 脚本 到目前为止我所做的是尝试使用os popen sys subprocess 并试图给出一个管道的例子 os popen echo P 1 1 591336 4927369 1
  • 如何使用 bash 中提供的工具生成一系列非周末日期?

    我想生成一个文件列表 其中名称包含 filename date 例如file 20111101 file 20120703 开始November 1 2011直到今天 应该不包括周末 Thanks 2011年试试这个 for y in 20
  • 使用 grep 查找所有匹配的模式

    In txt1 S01A1P2 S01A1P5 S01A1P4 In txt2 data train wave S01A1P3 mfc data train wave S01A1P7 mfc data train wave S01A1P8
  • PHP exec rm -Rf 不适用于子目录

    我试图删除特定文件夹中的所有内容 但它似乎不会影响子文件夹 但它应该 因为 bash 命令是从控制台执行的 system rm Rf some dir 该命令中不需要星号 如果要与文件一起删除目录 请同时删除斜杠 留下斜杠将删除文件 但保留
  • 带有二进制数据的 Bash echo 命令?

    有人可以解释一下为什么这个脚本有时只返回十六进制字符串表示形式的 15 个字节吗 for i in 1 10 do API IV openssl rand 16 API IV HEX echo n API IV od vt x1 w16 a
  • 使用 IFS bash 进行 CSV 解析:选择“;”作为分隔符

    我有一个包含 130 列的 CSV 我需要用它来做 3 个 csv 我用 while 和 IFS 循环 因为我需要对每一行的变量进行一些处理 这是我所做的 while IFS read my 130 vars what i do with
  • 在cmake中集成bash测试脚本

    我有一个 C cmake 项目 它使用 Boost Test 进行单元测试 现在我想向 cmake 公开一系列 bash 脚本 用于集成测试 假设每个脚本在以下情况下返回 0PASS或某些情况下 0FAILURE 我希望每次运行时都执行每个
  • 从命令行更改 konsole 选项卡标题并使其持久?

    如何更改 konsole 选项卡标题 默认情况下 它设置为 u n 所以它总是自动改变 我可以这样设置 qdbus org kde konsole KONSOLE DBUS SESSION setTitle 1 My Title 但是一旦您
  • Python 和不同的操作系统

    我即将使用 python 开始一个个人项目 我将在 Linux Fedora 和 Windows Vista 上使用它 尽管我也可能让它在 mac 上工作 我找到了一个适用于所有 3 个 GUI 的 API 我问这个问题的原因是因为我总是听
  • 将 SWI Prolog 代码编译为 Windows 可执行文件 - 解析器 Grails3 项目

    我正在尝试构建解析器 Grails3 项目https github com RichardMoot Grail https github com RichardMoot Grail谁的教程是http www labri fr perso m

随机推荐

  • Web密码学实现HKDF以输出ECDH

    我想使用 HKDF 作为密钥导出函数来实现椭圆曲线 diffie hellman 我在前端使用 python 后端和 普通 javascript 我在用蟒蛇密码学后端库和网络加密 API在前端作为密码库 我在双方创建了 ECDH 密钥对并交
  • 流分析作业未接收来自 IOT 中心的输入

    我跟着一个物联网中心教程并让它发挥作用 然后 我创建了一个流分析作业并使用上述内容作为输入 在测试连接时有效 但是我没有看到收到任何输入 运行示例测试时 我收到以下错误 说明 错误代码 ServiceUnavailable 错误消息 无法
  • 在 Xcode 5.0.1(更新的 xcode 6)中为 3.5、4.0(更新的 4.7 和 5.5)英寸屏幕开发相同的 UI,无横向、无 iPad 和故事板

    我开发了应用程序 考虑使用 xib 文件而不是故事板的 3 5 英寸 我无法找到任何教程或指南来帮助我设计适用于所有屏幕的类似应用程序 我使用的是 Xcode 5 0 1 我只开发没有自动布局的普通应用程序适用于 iOS 6 和 iOS 7
  • 如何在Lua中对request_uri字符串进行url解码

    当我使用ngx var request uri我返回一个包含 20 代替空格的字符串 是否有 urldecode 函数或类似函数来解码我的字符串 如果您正在使用nginx lua 模块那么你可以使用下面的 api 来实现这一点 newstr
  • 如何使用 Swift iOS 将字符串中的每个单词大写

    是否有一个函数可以将字符串中的每个单词大写 或者这是一个手动过程 例如 鲍勃很高 我想要 鲍勃很高 肯定有一些东西 但我发现的 Swift IOS 答案似乎都没有涵盖这一点 您在寻找吗capitalized 讨论每个单词中第一个字符更改为相
  • Linux 的 hrtimer - 微秒精度?

    是否可以在 Linux 主机上以微秒精度执行任务 即 我想在特定的时刻执行任务 我知道 Linux 不是实时系统 但我正在寻找 Linux 上的最佳解决方案 到目前为止 我已经创建了一个内核模块 设置了 hrtimer 并测量了输入回调函数
  • 如何在 swift 2 命令行工具中创建最小守护进程?

    我正在尝试做什么 我想运行一个守护进程来监听 OSX 系统事件 例如NSWorkspaceWillLaunchApplicationNotification in an command line toolxcode 项目 那可能吗 如果没有
  • SQL Server 忽略 where 表达式中的大小写

    如何构造 where 子句不区分大小写的 SQL 查询 MS SQL Server SELECT FROM myTable WHERE myField sOmeVal 我希望结果返回时忽略此情况 在 SQL Server 数据库的默认配置中
  • 如何使用 JQuery 获取

    如何使用 Jquery 或 javascript 获取选择组件值 MyJSF 代码如下
  • 从 Windows 脚本发送邮件

    我想通过 Windows Server 2003 标准版上的脚本发送邮件 我认为服务器设置几乎是开箱即用的 邮件服务器是 Exchange 邮件服务器 当您位于内部网络时 您可以使用普通的旧式 SMTP 我已经在我的机器上使用 Perl 完
  • iPhone核心数据模拟器

    我创建了一个使用核心数据的应用程序 有没有办法在模拟器上查看sqlite db 也许有一个工具可以允许在模拟器上查询 sqlite 数据库 就像数据浏览器一样 有没有办法浏览 iPhone 模拟器到 sqlite 数据库位置 对于 Xcod
  • 无法读取未定义的属性“debugHosts”

    我在尝试将 Realm 与 RN 0 29 一起使用时收到此错误 来自 Chrome 的堆栈跟踪 Cannot read property debugHosts of undefined handleException Exceptions
  • 如何在 Grails 1.3.7 中记录 sql

    我尝试在数据源 测试环境 中使用 logSql true 配置 grails 中的 sql 日志 但测试输出中没有显示任何内容 我读了这篇文章 但它不起作用 如何在 Grails 中记录 SQL 语句 Thanks 我们在 Config g
  • 如何在 PostgresQL 中显示所有无效对象

    寻找视图我可以列出 PostgreSQL 中所有 无效 对象 在 Oracle 中 我们可以使用 dab objects status 列 但我不确定在 PostgreSQL 中是否有一种简单的方法可以做到这一点 也许 我可以用下面的代码检
  • 使用 python 将图像复制到 MacOS 剪贴板

    我想在 Mac OS 上将图像 PIL 图像 复制到剪贴板 我尝试了几十种不同的方法来做到这一点 大多数 python 剪贴板模块 如 pyclip 或 Clipboard 不支持图像 我找到了一个在 Windows 上执行此操作的代码 但
  • 无法解释的 C++ 默认 int 值

    我一直在重构一些代码 我注意到一些涉及未初始化 int 数组的奇怪行为 int arr ARRAY SIZE 我设置了一个断点 似乎所有值都默认为 858993460 这个值有什么特别的吗 有什么想法为什么它们不默认为 0 吗 858993
  • 根据序列中缺失的数字拆分列表

    我正在寻找最Pythonic的方法 根据序列中缺少的数字将数字列表拆分为更小的列表 例如 如果初始列表是 seq1 1 2 3 4 6 7 8 9 10 该函数将产生 1 2 3 4 6 7 8 9 10 or seq2 1 2 4 5 6
  • 如何在 UWP c# 中使用 DataTable 内容填充 DataGrid

    我正在创建一个 UWP 应用程序 并尝试使用包含数据库中数据的 DataTable 填充我的 DataGrid 但没有成功 我已经寻找解决方案 但无法摆脱该错误 XAML 代码
  • 如果 Visual Studio 2010 中属性窗口的描述框被隐藏,如何显示它?

    如果 Visual Studio 2010 中属性窗口的描述框被隐藏 如何显示它 例如 下图显示了描述框 它显示为 加载 每当用户加载表单时发生 我遇到了同样的问题 这是由于描述框长度被拖为零引起的 为了解决这个问题 我必须取消固定属性框并
  • 如何检查是否在 Cygwin、Mac 还是 Linux 中运行?

    我有一个可在 Windows Cygwin 以及 Mac 和 Linux 上使用的 shell 脚本 每个版本需要稍微不同的变量 shell bash 脚本如何检测它是在 Cygwin Mac 还是 Linux 中运行 通常 uname及其