Shell的相關(guān)概念和配置方法是什么

這篇文章將為大家詳細(xì)講解有關(guān)Shell 的相關(guān)概念和配置方法是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)忠縣免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

使用Linux的過(guò)程中少不了使用各種各樣的Shell, 而根據(jù)啟動(dòng)環(huán)境的不同,Shell會(huì)讀取不同的配置文件。 本文便來(lái)詳細(xì)介紹這些不同名字的配置文件在何時(shí)會(huì)被Shell讀取。

Shell 的相關(guān)概念和配置方法是什么

什么是 Shell

Shell(Unix Shell)是一種命令行解釋器,是Unix操作系統(tǒng)下最傳統(tǒng)的人機(jī)接口。 在Shell中,用戶(hù)可以通過(guò)輸入程序名稱(chēng)來(lái)執(zhí)行某個(gè)程序, 最初計(jì)算機(jī)用戶(hù)就是通過(guò)Shell來(lái)讓計(jì)算機(jī)執(zhí)行任務(wù)的。 今天在Linux和Mac中大量使用的Shell包括CSH,Bash,ZSH等。

第一個(gè)Unix Shell是貝爾實(shí)驗(yàn)室的Ken Thompson 寫(xiě)的sh,從1971年便開(kāi)始使用了。 Ubuntu、RedHat等Linux發(fā)行版中默認(rèn)的Shell是Bash(Bourne Shell), 作者是貝爾實(shí)驗(yàn)室的Stephen Bourne,因此得名。 Harttle在使用的是Z shell,這是一個(gè)非?,F(xiàn)代的Shell,兼容于Bash。

什么是 Shell 命令

Shell命令就是我們常說(shuō)的Linux命令,這些命令可以分為兩類(lèi):

一類(lèi)是Shell Builtin,這和Shell類(lèi)型有關(guān)。例如Bash中有echo, pwd等。
一類(lèi)是PATH下的軟件,比如/usr/bin下的ls, mkdir等。
Shell編程是一系列Shell(通常指Bash)命令寫(xiě)在一個(gè)文件中,以批量地去執(zhí)行。 這個(gè)文件便是Shell腳本,其中包含了要被順序執(zhí)行的Shell命令。

這些Shell腳本一般命名為*.sh來(lái)表示通過(guò)Shell來(lái)執(zhí)行。 Shell腳本第一行通常會(huì)包含當(dāng)前腳本文件的解釋器,比如#!/usr/bin/bash 是指用戶(hù)執(zhí)行該腳本時(shí),用Bash來(lái)解釋執(zhí)行。

什么是 Terminal

Terminal(終端)是指計(jì)算機(jī)的一臺(tái)設(shè)備或一個(gè)軟件, 它可以接受鍵盤(pán)輸入傳送給計(jì)算機(jī), 并通過(guò)屏幕或打印機(jī)來(lái)顯示計(jì)算機(jī)傳送來(lái)的字符輸出。 早期的終端就是一臺(tái)打字機(jī)(teletypewritter,TTY), 因此TTY和Terminal是同義詞。 至今Linux操作系統(tǒng)都會(huì)提供若干個(gè)TTY終端(按下Ctrl+Alt+F1即可進(jìn)入)。

終端一詞最初是指電纜末端的那臺(tái)設(shè)備,是從電子學(xué)的角度上進(jìn)行命名的。 在Linux術(shù)語(yǔ)中,TTY其實(shí)是一個(gè)擴(kuò)展的流設(shè)備。

除了系統(tǒng)內(nèi)核外,Terminal Emulators(終端模擬器)也可以提供Terminal, 這些由終端模擬器提供的Terminal通常稱(chēng)為Pseudo-TTY。 使用終端模擬器來(lái)提供Terminal主要是為了方便使用,通常一個(gè)終端模擬器可以打開(kāi)多個(gè)終端。 比如X Windows系統(tǒng)中常用的Xterm,GNU Screen,SSH, GNome中的Terminal,KDE中的Konsole,Mac下常用的iTerm2等。這些軟件都屬于Terminal Emulator。

什么是 Console

Console(控制臺(tái))通常是指一臺(tái)設(shè)備、一個(gè)軟件或一個(gè)操作系統(tǒng)的Primary Terminal。 Console的叫法是從物理意義上來(lái)的,直接連在設(shè)備上的那個(gè)終端就叫Console。 比如Linux的TTY,Chrome的控制臺(tái),交換機(jī)的管理終端。

什么是交互式 Shell

Interactive Shell(交互式 Shell)與登錄 Shell 都是指 Shell 所處的運(yùn)行狀態(tài), 每個(gè)操作系統(tǒng)中可能會(huì)運(yùn)行多個(gè) Shell,這些 Shell 可能會(huì)處于下面的任何一種運(yùn)行狀態(tài)。

Interactive Shell(交互式Shell)是指可以讓用戶(hù)通過(guò)鍵盤(pán)進(jìn)行交互的Shell。 我們?cè)谑褂玫腃LI都是交互式Shell。

Non-interactive Shell(非交互式Shell)是指被自動(dòng)執(zhí)行的腳本, 通常不會(huì)請(qǐng)求用戶(hù)輸入,輸出也一般會(huì)存儲(chǔ)在日志文件中。 比如用 Cron 定時(shí)任務(wù)更新壁紙一文中被crontab定時(shí)執(zhí)行的腳本就運(yùn)行在非交互式Shell中。

什么是登錄 Shell

Login Shell(登錄Shell)是指該Shell被運(yùn)行時(shí)用于用戶(hù)登錄,比如TTY中的Shell就是以登錄Shell的狀態(tài)在運(yùn)行。

Non-login Shell(非登錄Shell)是指在用戶(hù)已登錄情況下啟動(dòng)的那些Shell。 被自動(dòng)執(zhí)行的Shell也屬于非登錄Shell,它們的執(zhí)行通常與用戶(hù)登錄無(wú)關(guān)。

Shell 配置文件

Shell配置文件其實(shí)是一種特殊的Shell腳本,只不過(guò)沒(méi)有用.sh來(lái)命名。 在Shell被啟動(dòng)時(shí)會(huì)選擇性地執(zhí)行配置文件中的Shell命令, 這些命令一般用于配置當(dāng)前Shell下的工作環(huán)境, 通常包含一些別名(alias),PATH,編輯器(EDITOR)等配置。

Shell 配置文件可以分為系統(tǒng)級(jí)別的配置文件和用戶(hù)級(jí)別的配置文件。 任何一種 Shell 都有用戶(hù)級(jí)別的配置文件,以及對(duì)應(yīng)的系統(tǒng)級(jí)別的配置文件。

系統(tǒng)級(jí)別的配置文件位于/etc下,這些配置會(huì)應(yīng)用于所有用戶(hù)。例如/etc/profile,/etc/bashrc。
用戶(hù)級(jí)別的配置文件位于用戶(hù)目錄~下,通常會(huì)加一個(gè).來(lái)隱藏。例如~/.profile,~/.bashrc。
在Shell啟動(dòng)時(shí),會(huì)首先執(zhí)行系統(tǒng)級(jí)別的配置文件(如果存在的話(huà)),再執(zhí)行用戶(hù)級(jí)別的配置文件。也就是說(shuō)~/.bashrc中的配置會(huì)覆蓋/etc/bashrc中的配置。

登錄 Shell 的配置文件

登錄 Shell 會(huì)讀取登錄相關(guān)的配置文件,一般可分為三類(lèi):

.profile 配置登錄 Shell 的行為。在作為登錄 Shell 啟動(dòng)時(shí)讀取。
.login 登錄時(shí)的讀取。
.logout 登出時(shí)讀取。
.profile是/bin/sh的配置文件。Bash兼容于sh,因此Bash作為登錄Shell時(shí)也會(huì)讀取/etc/profile和~/.profile(其實(shí)幾乎所有Shell都會(huì)這樣做)。
.login是登錄Shell在用戶(hù)登錄后讀取的配置文件,csh、tcsh都會(huì)讀取它。
.logout是登錄Shell在用戶(hù)退出時(shí)讀取的配置文件,csh、tcsh都會(huì)讀取它。
每一種Shell在兼容上述配置文件的同時(shí),也會(huì)有一些私有的配置文件。比如Bash:
.bash_profile是Bash私有的登錄Shell配置文件。
.bash_login是Bash作為登錄Shell,用戶(hù)登錄后讀取的配置文件。
.bash_logout是Bash作為登錄Shell,用戶(hù)退出時(shí)讀取的配置文件。
比如 Zsh 的 .zprofile, .zlogout, .zlogin 等等,詳見(jiàn) https://wiki.archlinux.org/index.php/zsh

交互式 Shell 的配置文件

有一些配置文件是只會(huì)被交互式Shell讀取的,包括:.zshrc,.bashrc等。

其中.bashrc只會(huì)被交互式的、非登錄Bash讀取。 因此往往會(huì)在.bash_profile中調(diào)用~/.bashrc來(lái)讓Bash作為登錄Shell時(shí)也讀取~/.bashrc:

[[ -r ~/.bashrc ]] && . ~/.bashrc

.zshrc會(huì)被任何交互式Z Shell讀取,除非設(shè)置了-f參數(shù)。 C Shell, TCShell啟動(dòng)時(shí)卻總是會(huì)去讀取 cshrc, .tcshrc,無(wú)論當(dāng)前Shell是否為交互式的、或者登錄Shell。

關(guān)于Shell 的相關(guān)概念和配置方法是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

標(biāo)題名稱(chēng):Shell的相關(guān)概念和配置方法是什么
網(wǎng)頁(yè)路徑:http://muchs.cn/article4/pidjie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、定制開(kāi)發(fā)、標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計(jì)公司、建站公司動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)