首页 >>  正文

linux是基于unix开发的吗

来源:baiyundou.net   日期:2024-09-21

摘要:程序员都知道,Linux 不是 Unix,不过二者之间确实存在关系,即 Linux 系统是从 Unix 派生出来的,而 Linux 是一个类 Unix 的操作系统。那么,二者之间具体存在哪些明显的差异呢?

原文链接:https://akr.am/blog/posts/unix-is-not-linux

声明:本文为 CSDN 翻译,未经授权,禁止转载。

作者 | Mohamed Akram译者 | 弯月

出品 | CSDN(ID:CSDNnews)

网上很多有关POSIX和Unix工具的教程和指南总是假设你安装了Linux,或者更具体地说,安装了基于GNU的操作系统。然而,在探讨shell的行为、工具程序以及C的标准库时,这种假设往往会产生很大的影响。

虽然Linux的主导地位可能会让我们忽略Linux与这些操作系统的不同,但我们还是应该有一定的了解。在本文中,我将列出一些比较明显的差异。

Bash不是标准的shell

所有Unix系统上的默认shell都是sh,而不是bash。POSIX标准中介绍了sh中使用的语言。然而,在许多Linux系统上,sh只是指向bash的链接,这样可以用更接近标准的方式来使用bash,但人们依然可以使用一些无法在其他系统上使用的bash功能。如有疑问,请参阅标准。

Unix不包含长选项

Unix命令的选项有两种写法:短选项(只有一条短线-)与长选项(有两条短线--)。短选项一般会采用缩写的形式,而长选项一般会写出完整的单词。

许多工具程序都接受长选项,例如grep --count,对应的短选项是grep -c。前者是GNU的写法,其他系统通常不会采用这种写法,例如BSD。事实上,标准的getopts工具程序和相应的getopt C函数只支持短选项。

Make不同于GNU make

POSIX版本的make比GNU版本更有局限性。这个问题很难解决,因为规范的许多方面都有所欠缺,特别是逻辑或条件运算符。为了解决这个问题,你可以将一些逻辑移动到configure脚本,由这个脚本生成另一个Makefile,然后再包含到主文件中。此外,BSD的语法与GNU完全不同,例如条件语句。幸运的是,如果你只关注macOS和Linux,则可以放心地使用GNU的特性,因为macOS都是基于GNU的。

C编译器不同于GCC

在Makefiles文件中引用C编译器时,最好使用变量$(CC),在编译C++代码时,最好使用变量$(CXX)。大多数BSD系统的默认编译器如今都改为使用Clang了,而且不提供gcc可执行文件。如果是在Makefiles以外使用C和C++编译器,则可以直接使用cc和c++命令,这两个命令能在所有系统上工作。

GNU不同于Linux

二者略有不同,GNU接口不一定会出现在Linux系统上。例如,Alpine Linux发行版因其轻量级而流行于Docker容器中,它没有使用musl的GNU C库,而且放弃了GNU工具程序,改为使用BusyBox。因此,最好还是使用可移植的接口,即便你的目标只是Linux系统。

Unix不同于UNIX

最后,请注意,Unix与UNIX也不完全相同。后者是需要The Open Group认证的商标。在众多经过认证的操作系统中,最有名的是macOS,它遵循一切UNIX规范。也就是说,包括BSD在内的大多数类Unix系统以及GNU工具都在努力尽量遵守标准。

","force_purephv":"0","gnid":"938a96b0bedf62e68","img_data":[{"flag":2,"img":[{"desc":"","height":"80","s_url":"https://p0.ssl.img.360kuai.com/t0186957a1ca5352752_1.gif","title":"","url":"https://p0.ssl.img.360kuai.com/t0186957a1ca5352752.gif","width":"640"},{"desc":"","height":"607","title":"","url":"https://p0.ssl.img.360kuai.com/t01d614e58f1dc1025f.jpg","width":"1080"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1661947874000,"pure":"","rawurl":"http://zm.news.so.com/cfbf1d8491a4fb7eb0359c8100cb0878","redirect":0,"rptid":"bf7145ae1614b6ae","s":"t","src":"CSDN","tag":[{"clk":"ktechnology_1:操作系统","k":"操作系统","u":""},{"clk":"ktechnology_1:mac","k":"mac","u":""},{"clk":"ktechnology_1:linux","k":"linux","u":""}],"title":"再强调一遍:Unix 不是 Linux!

边和爽2107Linux操作系统是用什么语言编写的 -
元庾爽19693071769 ______ Linux操作系统是用C语言、汇编语言编写的.Linux(lɪnəks/ LIN-əks)是一种自由和开放源码的类UNIX 操作系统.该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布,在加上用户空间的应用程序之后,成为 Linux 操作系统.Linux ...

边和爽2107Unix和Linux有什么关系? -
元庾爽19693071769 ______ Unix 有两种架构,一种叫systemV型,一种叫BSDUnix,现在流行的商业版Unix多为systemV衍化而来像IBM的AIX ,HP的HP-UX;BSDUnix的典型代表是开放源码的FreeBsd,这个也是计算机网络协议TCP/IP的诞生平台. Linux是 systemV 架构的Unix的简化模式衍生而来的. 他们比windows的优势就是对硬件资源的利用率远胜于Windows,可以多用户同时登录使用,命令行的界面比Windows的图形界面节省了更多的硬件资源而使这些资源能更多的用于处理程序运行和运算,是用做服务器的首选操作系统

边和爽2107LINUX软件的介绍 -
元庾爽19693071769 ______ Linux系统遵循GPL协议,具有开源、可定制、安全,稳定等特征,自问世以来得到了迅速的推广和应用,成为当今世界主流操作系统之一.IDC数据显示,Linux产业收入从2001年的100亿美元增长到2006的1100亿美元,年增幅达60%.短短几...

边和爽2107linux 是不是系统软件? -
元庾爽19693071769 ______ linux不是系统软件,是一个操作系统,更为严格的来讲是一个系统内核.Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统.Linux继承了Unix以网络为核心的设计...

边和爽2107什么是Linux
元庾爽19693071769 ______ LINUX是一个系统,和操做系统有很多地方相似,LINUX做为服务器的话是首选,但是如果家庭用户建议还是使用WINDOWS的系统.

边和爽2107IOS系统内核是Linux还是Unix? -
元庾爽19693071769 ______ iOS 操作系统作为一个整体,属于 Unix 系统.它的内核是 Darwin Mach 内核.Unix 系统起源于 20世纪70年代,产生了 SysV 和 BSD 两大分支.后来因为版权,AT&T 和 BSDi 打了起来,GNU 和 Linux 被开发出来成为替代品.现在官司是结束...

边和爽2107LINUX是甚么系统
元庾爽19693071769 ______ Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件、应用程序和网络协议.它支持32位和64位硬件.Linux继承了Unix以网络为核...

边和爽2107什么是Linux和Unix,它们有什么区别
元庾爽19693071769 ______ Linux是一类Unix计算机操作系统的统称.Linux操作系统的内核的名字也是“Linux”.Linux操作系统也是自由软件和开放源代码发展中最著名的例子.严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个...

边和爽2107linux tgt什么意思? -
元庾爽19693071769 ______ Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件、应用程序和网络协议.它支持32位和64位硬...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024