登錄/非登錄、交互/非交互式shell

登錄與非登錄shell的:

區分:是否需要輸入用戶名密碼。

轉換:

非登錄可以轉換成登錄 使用--login

考慮轉換情況,相對科學的區分:既不使用密碼,也不使用--login轉換的是非登錄,其他都是登錄。

登錄與非登錄運行shell的區別:

對於Bash來說,登錄shell會首先讀取和執行/etc/profile全局配置文件中的命令,然後依次查找~/.bash_profile、~/.bash_login 和 ~/.profile這三個配置文件,讀取和執行這三個中的第一個存在且可讀的文件中命令。除非被“–noprofile”選項禁止了。

在非登錄shell裏,只讀取 ~/.bashrc (和 /etc/bash.bashrc、/etc/bashrc )文件,不同的發行版裏面可能有所不同。


交互式與非交互式shell:

區分:是否與用戶進行交互(在終端上執行,shell等待你的輸入,並且立即執行你提交的命令。

交互式與非交互式shell運行時的區別:

交互式shell下打開進程時,會啓用工作控制job control(會影響到其子進程進程組的編號,作業控制模式下被shell打開的進程,進程組號爲進程號),否則不會啓用(其打開的進程組號繼承父進程的進程組,既運行腳本的非交互式shell進程)。這是linux在作業控制中的設計,我準備另起文章探討。在shell腳本中,使用set -m可以改變腳本的運行模式開啓工作控制。


是否登錄與是否交互是兩個維度的概念,兩兩組合的四種情況均會出現:

1、登錄交互式  最常見的登錄系統後進行操作使用的shell。

2、非登錄非交互式  常見的shell腳本的運行方式。

3、非登錄交互式   在shell中使用bash調出shell、在系統中打開命令行工具等。

4、登錄非交互式   強制使用登錄方式打開的shell腳本。可以改變腳本訪問的全局文件,在不少情況下也需要使用(遠程使用非登錄shell調用腳本但需要登錄的全局環境時適用)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章