Linux-一些基本常识

{% note default %}
Linxu的一些起源介绍

{% endnote %}

Linux的诞生

Linux,我们都知道起初是开源的一个项目,是一个个人爱好,受一个小型的类UNIX系统启发开发的程序,但是后来逐步发展成为一个完整的系统。其开发目的是保证Linux除包含可以自由发布的代码外,不会集成任何专有代码。

GNU项目和自由软件基金会

但是,光有一个系统还不够,我们都知道,一个操作系统只是提供了一个运行程序的环境和平台。
而起初Linux只是建立了一个操作系统内核,而内核本身仅仅只是系统的一部分。
就好比你开了一家饭馆,却没人来吃饭。
所以我们需要的是可以运行的程序/软件、开发工具。但是传统的商业化的UNIX系统的那些应用程序是收费的。
于是GNU项目和自由软件基金会旨在为Linux软件社区提供自由的应用程序软件。且能够兼容UNIX。
现在我们有了这么多的自由软件加上Linux内核。

  • GCC: GNU编译器集
  • G++: C++编译器,GCC的一部分
  • bash:命令解释器(shell)
    我们就有了一个完整的Linux系统。现在我们一般把GNU/Linux简称为Linux。

Linux程序

Linux应用程序表现为两种特殊类型的文件:可执行文件和脚本文件
可执行文件就是计算机可直接运行的文件,相当于Windows中的.exe文件。
脚本文件是一组指令的集合,这些指令将由另一个程序(解释器)来执行。它们相当于Windows中的.bat文件、.cmd文件或解释执行的BASIC程序。

Linux中-程序怎么执行的-系统都有的系统环境变量

可能刚开始用Linux的人时不时会好奇的想,程序到底是怎么执行起来的,去哪里找到的可执行文件(你咋知道我在这)。
当然,如果你知道程序在哪,你找到了,运行起来没有任何问题。
但是,可能的疑惑在于,最开始登陆系统的时候,要运行某些应用程序,比如gcc、vim等;我们无论在任何路径下输入gcc或vim都可以运行这些应用程序,这是为什么呢。
我们联系一下Windows,你想想在Windows中怎么运行程序?
Windows胜在图形化界面,我们是不是直接双击图标就运行了程序。但是,这个图标真的就是程序吗?
它可能就是一个快捷方式,是一个链接。链接的另一端是你真正放在磁盘上的应用程序。系统就可以找到要运行的程序(相当于找到指定目录)。
但是,同Linux一样,有时候我们也可以在cmd中直接输入一些程序的名字直接运行,而不需要到指定的目录里去。

个人理解与体会:
以前安装软件的时候,偶尔会让你配置环境变量,不懂为什么,但是问题也不大。
在学习了Linux之后,逐渐自己就体会到了why。
Linux运行程序其实就是直接运行就可以了,在这里我总结成两种方式:

  1. 直接找到指定目录里去直接运行可执行文件
  2. 当你在shell中直接输入程序名字的时候,shell会在shell变量PATH中按照你给出的程序名搜索与之同名的文件
    在Windows就是系统环境变量。
    这就解释清楚了,为什么有些程序无论在哪都可以直接输入名字运行,有些却不行。
    (我安装完git的时候,想在cmd中检查一下安装成功没,输入git不行,一般就是没有配置环境变量)

为什么在Linux中要用./a.out执行程序

之前我也是好奇,为什么用./a.out就可以执行文件,我期间听别人还是老师说过为什么,知道又给忘了(没有好好学习)。

上面讲过,shell会在相当于是环境变量中,找到与之同名的文件。这个时候就会有问题。
如果这个程序(假设a.out)在你的家目录中,而PATH变量中不包含指向你家目录的条目,shell就找不到a.out。
更进一步,如果这个时候,PATH变量中包含其中一个目录里面也有一个a.out,那么shell就会执行这个a.out。
如果这样的目录出现在你的家目录前面(家目录包含进去了),这种情况也会发生。

所以,为了避免这种潜在的问题,我们一般会在a.out前面加上./。 .就是当前目录的意思,这会告诉shell,在当前目录中找名叫a.out的文件执行。


posted @ 2022-01-06 23:51  Ryan~~~~  阅读(40)  评论(0)    收藏  举报