Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“检测”;“Windows上的Ubuntu”;来自bash脚本的vs原生Ubuntu_Bash_Windows Subsystem For Linux - Fatal编程技术网

“检测”;“Windows上的Ubuntu”;来自bash脚本的vs原生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

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: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