“检测”;“Windows上的Ubuntu”;来自bash脚本的vs原生Ubuntu
bash脚本能否检测到它是否在“Windows上的Ubuntu”和本机Ubuntu中运行?如果是,怎么做“检测”;“Windows上的Ubuntu”;来自bash脚本的vs原生Ubuntu,bash,windows-subsystem-for-linux,Bash,Windows Subsystem For Linux,bash脚本能否检测到它是否在“Windows上的Ubuntu”和本机Ubuntu中运行?如果是,怎么做 我在两台机器上运行了env,没有发现任何明显的环境变量差异。我可以测试/mnt/c目录是否存在,但这并不是万无一失的,因为该目录可能也存在于本机Ubuntu上。Windows上Ubuntu中的/proc/version似乎包含: Linux版本3.4.0-Microsoft(Microsoft@Microsoft.com)(gcc版本4.7(gcc))#1 SMP抢占周三12月31日14:4
我在两台机器上运行了
env
,没有发现任何明显的环境变量差异。我可以测试/mnt/c
目录是否存在,但这并不是万无一失的,因为该目录可能也存在于本机Ubuntu上。Windows上Ubuntu中的/proc/version
似乎包含:
Linux版本3.4.0-Microsoft(Microsoft@Microsoft.com)(gcc版本4.7(gcc))#1 SMP抢占周三12月31日14:42:53太平洋标准时间2014年
我的Ubuntu版本有:
Linux版本4.4.0-31-generic(buildd@lgw01-16) (gcc版本5.3.1 20160413(Ubuntu 5.3.1-14ubuntu2.1))#50 Ubuntu SMP周三7月13日00:07:12 UTC 2016
这段代码用于检测脚本运行在哪个版本的Ubuntu上:
if grep -q Microsoft /proc/version; then
echo "Ubuntu on Windows"
else
echo "native Linux"
fi
:搜索
/proc/version
或/proc/sys/kernel/osrelease
字符串“Microsoft”
或“WSL”
是最好的方法;然后。。。其他的fi速度更快,因为它避免了生成grep
process@NiklasHolm你错了<代码>$(…)生成进程。使用read var@gavenkoa我没说它不会生成进程,但它比生成grep快。@NiklasHolm使用read var
有一个技巧可以避免进程生成,“uname-a”报告了什么?uname-a
在Windows上从Ubuntu输出:Linux计算机3.4.0+#1抢先到8月1日星期四17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux