偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Linux 中的 Login Shell 是什么?

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

Login shell 是登錄到交互式會話(interactive session)時使用用戶 ID 執(zhí)行的第一個進程。

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

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

Linux 系統(tǒng)的第一個進程,不管是 init 還是 systemd,都會啟動 getty 程序。這個 getty,是“get tty”(tty表示物理或虛擬終端)的縮寫,負責保護系統(tǒng)免受未經授權的訪問。

圖片

當你嘗試連接到 Linux 系統(tǒng)(登錄本地系統(tǒng),或者通過 ssh 連接遠程服務器)時,getty 會(通過登錄程序)提示你輸入用戶名,輸入完用戶名后,又會提示你輸入密碼。

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

圖片

如上圖所示,用戶 abhishek 登錄時啟動的第一個程序(針對 Linux 中的標準用戶),是 Login Shell。

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

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

如果第一個程序那一列中沒有信息,那么默認為 /bin/sh,即標準 shell。

Login shell 和 non-login shell

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

在 Linux 中,當你運行一個 shell 腳本時,它是在自己的 shell(非交互式 shell)中運行的。你可以在當前 shell(交互式 shell)中啟動一個新 shell。

圖片

從技術角度講,這些都是子 shell。

shell 的配置文件和 RC 文件

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

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

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

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

用戶主目錄中的文件是特定于用戶的。這允許用戶為常用命令創(chuàng)建別名或為程序使用自定義 PATH 變量。

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

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

看下面的例子:

圖片

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

概況一下:

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

如何查看當前是否在 login shell 中?

這非常簡單,至少對于 bash shell 來說是這樣。對于 login shell,shell 可執(zhí)行文件的名稱以 - 開頭。對于non-login shell,它只是 shell 的名稱。

圖片

在桌面 Linux上,通常不使用 login shell,登錄由顯示管理器管理。這就是為什么當在 Linux 桌面上打開一個終端時,我們會看到即使是在終端中運行的第一個 shell 也不是login shell。

責任編輯:龐桂玉 來源: TIAP
相關推薦

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

2012-01-18 10:46:33

ibmdw

2020-12-15 09:08:40

LinuxShell

2022-11-16 08:43:56

Linux/etc/hosts文件

2009-09-29 10:45:17

UnixLinuxshell

2023-05-18 22:51:08

2009-10-23 13:24:20

linux Shell

2021-04-26 07:51:00

JavaScript方法函數(shù)

2022-09-15 09:54:34

nullPython字符

2010-06-29 13:58:17

SNMPMIB

2022-11-14 15:07:09

Linux管道

2023-05-05 08:18:38

Linuxsource命令

2021-10-09 07:10:32

Shell腳本linux

2023-08-29 09:50:42

Unix shellLinux

2013-12-19 16:43:02

2025-05-28 08:05:00

stdclassPHP開發(fā)

2023-03-28 07:03:15

gRPCMetadata
點贊
收藏

51CTO技術棧公眾號