自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux 中的 Login Shell 是什么?

系統(tǒng) Linux
這個(gè)解釋乍一看比較簡(jiǎn)單,但仔細(xì)想想又有些模糊。為了便于理解,下面我們重新看一下 Linux 系統(tǒng)的登錄過(guò)程。

Login shell 是登錄到交互式會(huì)話(interactive session)時(shí)使用用戶(hù) ID 執(zhí)行的第一個(gè)進(jìn)程。

這個(gè)解釋乍一看比較簡(jiǎn)單,但仔細(xì)想想又有些模糊。為了便于理解,下面我們重新看一下 Linux 系統(tǒng)的登錄過(guò)程。

Linux 是一個(gè)多用戶(hù)的操作系統(tǒng),可以允許多個(gè)用戶(hù)同時(shí)登錄和使用系統(tǒng)。

Linux 系統(tǒng)的第一個(gè)進(jìn)程,不管是 init 還是 systemd,都會(huì)啟動(dòng) getty 程序。這個(gè) getty,是“get tty”(tty表示物理或虛擬終端)的縮寫(xiě),負(fù)責(zé)保護(hù)系統(tǒng)免受未經(jīng)授權(quán)的訪問(wèn)。

圖片

當(dāng)你嘗試連接到 Linux 系統(tǒng)(登錄本地系統(tǒng),或者通過(guò) ssh 連接遠(yuǎn)程服務(wù)器)時(shí),getty 會(huì)(通過(guò)登錄程序)提示你輸入用戶(hù)名,輸入完用戶(hù)名后,又會(huì)提示你輸入密碼。

登錄時(shí)輸入的信息(用戶(hù)名和密碼),系統(tǒng)會(huì)將其根據(jù)存儲(chǔ)在 /etc/passwd 中的信息進(jìn)行驗(yàn)證。/etc/passwd 文件中存儲(chǔ)的信息包含用戶(hù)名、用戶(hù) ID、主目錄以及登錄成功后要啟動(dòng)的第一個(gè)程序等。

圖片

如上圖所示,用戶(hù) abhishek 登錄時(shí)啟動(dòng)的第一個(gè)程序(針對(duì) Linux 中的標(biāo)準(zhǔn)用戶(hù)),是 Login Shell。

字段中也可能有其他值。比如,sshd 是一個(gè)系統(tǒng)用戶(hù),而不是一個(gè)真正的用戶(hù),它不能像 abhishek 這樣的普通用戶(hù)那樣以交互方式登錄系統(tǒng)。如下所示:

sshd:x:110:65534::/run/sshd:/usr/sbin/nologin

如果第一個(gè)程序那一列中沒(méi)有信息,那么默認(rèn)為 /bin/sh,即標(biāo)準(zhǔn) shell。

Login shell 和 non-login shell

我們登錄到一個(gè)系統(tǒng),知道它是一個(gè) login shell,那么這意味著什么呢?是不是還有其他 shell 呢?

在 Linux 中,當(dāng)你運(yùn)行一個(gè) shell 腳本時(shí),它是在自己的 shell(非交互式 shell)中運(yùn)行的。你可以在當(dāng)前 shell(交互式 shell)中啟動(dòng)一個(gè)新 shell。

圖片

從技術(shù)角度講,這些都是子 shell。

shell 的配置文件和 RC 文件

login shell 從 /etc/profile 和主目錄中的配置文件中讀取環(huán)境變量和其他配置,這得以讓我們可以使用 tab 補(bǔ)全鍵、設(shè)置彩色輸出以及其他內(nèi)容(比如 umask)等。

你可能知道在 Linux 系統(tǒng)中可用不止一個(gè) shell,大多數(shù) Linux 發(fā)行版都默認(rèn)使用 bash shell,你也可以安裝其他的 shell,比如 zsh 或者 Fish shell。

如果你的 login shell 是 bash,那么其配置文件為 /etc/profile~/.bash_profile,如果是 zsh,它的配置文件為 /etc/zprofile~/.zprofile。

/etc 目錄中的文件通常為系統(tǒng)中為用戶(hù)設(shè)置的各自 shell 的配置,這通常由系統(tǒng)管理員設(shè)置。

用戶(hù)主目錄中的文件是特定于用戶(hù)的。這允許用戶(hù)為常用命令創(chuàng)建別名或?yàn)槌绦蚴褂米远x PATH 變量。

non-login shell 源于 login shell,因此它通過(guò)配置文件獲取登錄shell設(shè)置的所有環(huán)境。除此之外,非登錄交互式shell可以通過(guò)/etc/home目錄中的rc(資源配置)文件定義自己的環(huán)境變量。

對(duì)于bash shell,通常是 /etc/bash.bashc 和 ~/.bashrc 文件,而對(duì)于zsh shell,則是 /etc/zshrc ~/.zshrc 文件。

看下面的例子:

圖片

上圖中,shell 讀取 /etc/bash.bashrc 文件后,其提示符變成了綠色。Ubuntu 在該文件中添加了其他參數(shù),顏色設(shè)置是其中之一。

概況一下:

  • 配置文件用于交互式 login shell,rc 文件用于交互式 non-login shell;
  • 首先執(zhí)行/etc/directory中的文件,然后執(zhí)行home目錄中的文件;
  • 配置文件和 rc 文件同時(shí)作用于非交互式的 non-login shell。

如何查看當(dāng)前是否在 login shell 中?

這非常簡(jiǎn)單,至少對(duì)于 bash shell 來(lái)說(shuō)是這樣。對(duì)于 login shell,shell 可執(zhí)行文件的名稱(chēng)以 - 開(kāi)頭。對(duì)于non-login shell,它只是 shell 的名稱(chēng)。

圖片

在桌面 Linux上,通常不使用 login shell,登錄由顯示管理器管理。這就是為什么當(dāng)在 Linux 桌面上打開(kāi)一個(gè)終端時(shí),我們會(huì)看到即使是在終端中運(yùn)行的第一個(gè) shell 也不是login shell。

責(zé)任編輯:龐桂玉 來(lái)源: TIAP
相關(guān)推薦

2023-03-02 08:48:43

Linuxsubshell

2022-08-21 16:27:36

LinuxShell

2022-04-03 13:17:21

Linux黑話解釋GRUB

2023-11-22 10:51:25

LinuxSuper

2020-12-15 09:08:40

LinuxShell

2012-01-18 10:46:33

ibmdw

2022-11-16 08:43:56

Linux/etc/hosts文件

2009-09-29 10:45:17

UnixLinuxshell

2023-05-18 22:51:08

2022-09-15 09:54:34

nullPython字符

2010-06-29 13:58:17

SNMPMIB

2021-04-26 07:51:00

JavaScript方法函數(shù)

2009-10-23 13:24:20

linux Shell

2021-10-09 07:10:32

Shell腳本linux

2022-11-14 15:07:09

Linux管道

2023-05-05 08:18:38

Linuxsource命令

2023-08-29 09:50:42

Unix shellLinux

2023-03-28 07:03:15

gRPCMetadata

2022-08-30 08:52:04

shell腳本Linux

2022-05-17 07:36:38

CSSBFC前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)