當前位置:
首頁 > 最新 > Shell 相關概念入門教程

Shell 相關概念入門教程

前言

作為開發人員,Shell是我們每天都要接觸的東西,然而與它相關的一些問題,比如它的具體概念是什麼,它和 bash、sh等概念有什麼關係,如何配置它等等,我們卻未必清楚。今天我們追根溯源,把與Shell 相關的概念統統梳理一下吧。

解釋與編譯

編程語言沒有編譯型和解釋型的區別,只能說某個語言常見的執行方式為編譯成新代碼執行或解釋器解釋執行

編譯器的輸入是A語言的源代碼,而輸出是B語言;比如C++,被編譯成彙編語言;

解釋器的輸入是A語言的源代碼,它直接執行A語言;一般解釋器的內部實現是一個編譯器加一個虛擬機,編譯器把輸入語言編譯成中間語言,虛擬機直接執行中間語言。

terminal

一個程序,是界面上打開的黑框框本身,比如 xterm、kvt等。shell 運行於其中。

shell 概念

shell 是一個命令行解釋器,顧名思義就是機器外面的一層殼,用於人機交互,只要是人與電腦之間交互的介面,就可以稱為 shell。表現為其作用是用戶輸入一條命令,shell 就立即解釋執行一條。不局限於系統、語言等概念、操作方式和表現方式等。 比如我們平時在黑框框里輸入命令,叫 command-line interface (CLI);在屏幕上點點點,叫graphical user interface (GUI)

Interactive 和 Non-interactive

Interactive,如果你打開 terminal,在裡面輸入 bash 代碼,回車得到輸出,你就是在運行一個 Interactive shell,它的特徵是可以讓用戶輸入,然後直接把輸出打到界面上;如果你運行一個包含了若干行的 shell 腳本,這些 shell 代碼就運行在Non-interactive shell 中。

Login 和 Non-login

login shell 是指登錄系統後所獲得的頂層 shell,比如最常用的 ssh 登錄,登錄完後得到一個 login shell

如果已經登錄了桌面電腦,打開 terminal 進入的 shell 就是 Non-login shell。

類型

常見的 shell 解釋器有 sh、bash這兩種,其他的 ksh、csh 和 zsh 等是不常見的。Mac OS 中默認安裝了以上所有類型,Windows 需要自行安裝,Linux 更不用說了。就像上面說的,只要一門語言有解釋器,就可以作為 shell 使用。比如Java 有第三方解釋器 Jshell,PHP有 PHP Shell。如果你用過 windows,那你對 cmd 這個詞一定不陌生,它是 windows shell,官方名稱叫做 command interpreter。

bash

Bash 是最常見的 shell,Mac 中默認 shell 就是 bash。

[bash官網這篇文章]描述了喚起 bash shell 時載入的不同文件:login shell 載入 ~/.bash\_profile ,而non-login shell 載入 ~/.bashrc 。

zsh

很多人的 mac 中會使用 zsh 而不是 bash,一大半是因為 oh-my-zsh 這個配置集,它兼容 bash,還有自動補全等好用的功能。zsh 的配置文件~/.zshrc

配置 shell

如上所說,shell 在啟動時都會去找配置文件,然後運行它。你安裝的一些腳本,如果想讓它能夠全局運行,就需要在配置文件中設置路徑。有過設置路徑後還是不管用的經歷嗎?多半是因為把配置寫在了錯誤的配置文件里。** 應該在配置shell(最常見的是配置默認命令)之前,使用 echo $SHELL,確認自己現在用的是什麼shell後,再去編輯對應的配置文件 **


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 前端配送站 的精彩文章:

TAG:前端配送站 |