溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell 的相關概念和配置方法是什么

發布時間:2021-11-09 16:49:23 來源:億速云 閱讀:194 作者:柒染 欄目:建站服務器

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

使用Linux的過程中少不了使用各種各樣的Shell, 而根據啟動環境的不同,Shell會讀取不同的配置文件。 本文便來詳細介紹這些不同名字的配置文件在何時會被Shell讀取。

Shell 的相關概念和配置方法是什么

什么是 Shell

Shell(Unix Shell)是一種命令行解釋器,是Unix操作系統下最傳統的人機接口。 在Shell中,用戶可以通過輸入程序名稱來執行某個程序, 最初計算機用戶就是通過Shell來讓計算機執行任務的。 今天在Linux和Mac中大量使用的Shell包括CSH,Bash,ZSH等。

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

什么是 Shell 命令

Shell命令就是我們常說的Linux命令,這些命令可以分為兩類:

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

這些Shell腳本一般命名為*.sh來表示通過Shell來執行。 Shell腳本第一行通常會包含當前腳本文件的解釋器,比如#!/usr/bin/bash 是指用戶執行該腳本時,用Bash來解釋執行。

什么是 Terminal

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

終端一詞最初是指電纜末端的那臺設備,是從電子學的角度上進行命名的。 在Linux術語中,TTY其實是一個擴展的流設備。

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

什么是 Console

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

什么是交互式 Shell

Interactive Shell(交互式 Shell)與登錄 Shell 都是指 Shell 所處的運行狀態, 每個操作系統中可能會運行多個 Shell,這些 Shell 可能會處于下面的任何一種運行狀態。

Interactive Shell(交互式Shell)是指可以讓用戶通過鍵盤進行交互的Shell。 我們在使用的CLI都是交互式Shell。

Non-interactive Shell(非交互式Shell)是指被自動執行的腳本, 通常不會請求用戶輸入,輸出也一般會存儲在日志文件中。 比如用 Cron 定時任務更新壁紙一文中被crontab定時執行的腳本就運行在非交互式Shell中。

什么是登錄 Shell

Login Shell(登錄Shell)是指該Shell被運行時用于用戶登錄,比如TTY中的Shell就是以登錄Shell的狀態在運行。

Non-login Shell(非登錄Shell)是指在用戶已登錄情況下啟動的那些Shell。 被自動執行的Shell也屬于非登錄Shell,它們的執行通常與用戶登錄無關。

Shell 配置文件

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

Shell 配置文件可以分為系統級別的配置文件和用戶級別的配置文件。 任何一種 Shell 都有用戶級別的配置文件,以及對應的系統級別的配置文件。

系統級別的配置文件位于/etc下,這些配置會應用于所有用戶。例如/etc/profile,/etc/bashrc。
用戶級別的配置文件位于用戶目錄~下,通常會加一個.來隱藏。例如~/.profile,~/.bashrc。
在Shell啟動時,會首先執行系統級別的配置文件(如果存在的話),再執行用戶級別的配置文件。也就是說~/.bashrc中的配置會覆蓋/etc/bashrc中的配置。

登錄 Shell 的配置文件

登錄 Shell 會讀取登錄相關的配置文件,一般可分為三類:

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

交互式 Shell 的配置文件

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

其中.bashrc只會被交互式的、非登錄Bash讀取。 因此往往會在.bash_profile中調用~/.bashrc來讓Bash作為登錄Shell時也讀取~/.bashrc:

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

.zshrc會被任何交互式Z Shell讀取,除非設置了-f參數。 C Shell, TCShell啟動時卻總是會去讀取 cshrc, .tcshrc,無論當前Shell是否為交互式的、或者登錄Shell。

關于Shell 的相關概念和配置方法是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女