什么是linux命令

什么是linux命令?很多人看到這個(gè)問題,都會(huì)不以為意,認(rèn)為這不算是一個(gè)問題。很多人都知道命令是什么,但是對(duì)于剛接觸linux的朋友來說,還是對(duì)命令有很多困惑。我們?cè)趌inux命令行下敲的命令,最終會(huì)被計(jì)算機(jī)執(zhí)行,這中間發(fā)生了什么?背后的原理是什么?這是我在最開始學(xué)習(xí)linux的時(shí)候困擾最久的問題。當(dāng)然這些問題不是一篇文章就可以解釋的了的,這需要對(duì)計(jì)算機(jī)原理、linux內(nèi)核有深入的了解,才能寫出完美的答案。

linux企鵝

但是我們可以先了解一下基礎(chǔ)的原理,這樣在實(shí)踐命令的時(shí)候才會(huì)有更好的效果。下面我講解一下自己對(duì)命令的理解。

我們?cè)诿钚邢虑妹畹臅r(shí)候,其實(shí)是在跟一個(gè)叫shell的程序打交道,shell會(huì)根據(jù)用戶敲的命令名字,在環(huán)境變量PATH指定的路徑下尋找和命令名字匹配的一個(gè)可執(zhí)行文件,找到后shell會(huì)創(chuàng)建一個(gè)子進(jìn)程,在子進(jìn)程中加載并執(zhí)行該可執(zhí)行文件。所以我們平時(shí)敲的大部分命令都是一個(gè)已經(jīng)存在的可執(zhí)行文件,那么這個(gè)可執(zhí)行文件放在哪里呢,通過whereis就可以看到命令所對(duì)應(yīng)的可執(zhí)行文件的路徑了,例如要看看ls這個(gè)命令在哪里,就執(zhí)行

whereis

ls就可以看到ls的路徑了。如果你把這個(gè)文件刪掉,那么shell就會(huì)告訴你找不到這條命令。大部分命令都是一個(gè)可執(zhí)行文件,但是我們?cè)谟脀hereis查看cd命令的可執(zhí)行文件路徑的時(shí)候,shell的輸出是這個(gè)樣子的:“cd:”,竟然沒有路徑名,這是什么鬼?

這是因?yàn)閏d是shell的一個(gè)內(nèi)置命令,不以可執(zhí)行文件的形式存在。所以咱們平時(shí)敲的命令主要分為兩種,一種是以可執(zhí)行文件存在的外部命令,一種是沒有可執(zhí)行文件的內(nèi)置命令。這里的外部和內(nèi)置是從shell的角度說的。那么怎么判斷一條命令是shell內(nèi)置命令還是外部命令呢,用type查看就可以了,比如查看cd,在命令行下敲type

cd,shell的輸出是cd is a shell builtin。那么cd就是一條shell內(nèi)置命令。

說了這么多,好像還沒有解釋shell是什么東西,簡(jiǎn)單來講,shell就是一個(gè)命令解釋器,shell和咱們敲的這些命令都是一樣的,都是運(yùn)行在linux內(nèi)核之上的應(yīng)用程序,在內(nèi)核的眼里都是內(nèi)核要調(diào)度執(zhí)行的進(jìn)程。這些進(jìn)程在運(yùn)行之前,都是一個(gè)一個(gè)的可執(zhí)行文件。只是shell是在linux啟動(dòng)之后就會(huì)由init進(jìn)程自動(dòng)加載執(zhí)行的。他也對(duì)應(yīng)著一個(gè)可執(zhí)行文件。可以通過查看/etc/passwd文件中每條記錄的最后一個(gè)字段查看每個(gè)用戶在啟動(dòng)后執(zhí)行的shell可執(zhí)行文件路徑,也可以通過SHELL環(huán)境變量查看當(dāng)前啟動(dòng)的shell。echo

$SHELL

那么上面提到的環(huán)境變量又是什么東西呢?可執(zhí)行文件是什么?他從哪里來?是怎么被加載到內(nèi)核中變成一個(gè)可調(diào)度的進(jìn)程的呢?shell是怎么創(chuàng)建子進(jìn)程的呢?進(jìn)程又是什么鬼?shell是被init進(jìn)程啟動(dòng),init(systemd)進(jìn)程又是什么?linux的啟動(dòng)流程是怎么樣的?進(jìn)程是如何被內(nèi)核調(diào)度的?說到這里,好像問題越來越多了,本來只是一個(gè)命令的問題,現(xiàn)在又引出這么多問題。技術(shù)就是這樣,知道的越多,不知道的也就越多。歡迎關(guān)注本頭條號(hào),我會(huì)在后面的文章持續(xù)為大家解答這些問題。本人水平有限,歡迎批評(píng)指正。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,719評(píng)論 0 5
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,340評(píng)論 0 10
  • 第一章 1.Linux是一套免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),它可以基于Intel x86系列處理器以及Cy...
    yansicing閱讀 5,589評(píng)論 0 9
  • 1. 硬鏈接和軟連接區(qū)別 硬連接-------指通過索引節(jié)點(diǎn)來進(jìn)行連接。在Linux的文件系統(tǒng)中,保存在磁盤分區(qū)...
    杰倫哎呦哎呦閱讀 2,535評(píng)論 0 2
  • 觀其大綱 第1部分Linux的基礎(chǔ)知識(shí)第1章Linux概述第2章Linux系統(tǒng)的安裝KickStart開始自動(dòng)安裝...
    周少言閱讀 1,673評(píng)論 1 10

友情鏈接更多精彩內(nèi)容