1、什麼是登錄shell?什麼是非登錄shell?shell
一、登錄shell是指:bash
(1)用戶登錄時,輸入用戶名和密碼後啓動的shell;string
(2)經過帶--login參數的命令:bash --login而啓動的shell。io
二、非登陸shell指:登錄
用戶登陸後,直接運行bash命令啓動的shell。變量
三、對於用戶來講,登錄shell和非登錄shell的主要區別是:啓動shell時所執行的startup文件不一樣。擴展
(1)登陸shell的啓動文件是/etc/profile、~/.bash_profilefile
(2) 非登陸shell的啓動文件是~/.bashrc程序
2、bash的運行模式密碼
交互式shell
交互式模式就是shell等待你的輸入,而且執行你提交的命令。這種模式被稱做交互式是由於shell與用戶進行交互。
這種模式也是大多數用戶很是熟悉的:登陸、執行一些命令、簽退。當你簽退後,shell也終止了。
交互式模式又分爲四種類型:login,非login,posix以及受限的shell.
肯定一個shell是不是交互式的能夠經過檢測$PS1環境變量.
(1) 當Bash做爲login shell被激活時,它將依次讀取並執行如下文件:
/etc/profile,~/.bash_profile,~/.bash_login,~/.profile
使用--noprofile選項激活Bash能夠禁止其讀任何初始化文件
在退出時執行 ~/.bash_logout 文件
(2) 當Bash做爲非login shell被激活時,它將讀取並執行~/.bashrc
使用--norc選項激活Bash能夠禁止執行任何初始化文件,使用
--rcfile file能夠指定執行的初始化文件.
(3) 當Bash做爲posix模式被激活時,它將先檢查$ENV變量是否認義.
若定義,Bash讀取並執行有$ENV變量擴展而獲得的文件,不然再也不
執行任何初始化文件。
(4) 當Bash做爲受限模式被激活時,它除了禁止某些操做之外,其餘行爲
於其餘模式相同.受限操做有:改變目錄,修改$SHELL和$PATH變量,
運行exec,以絕對路徑運行程序以及使用重定向.Bash 1.x中不包含
受限模式.
非交互式shell
shell也能夠運行在另一種模式:非交互式模式。在這種模式下,shell不與你進行交互,
而是讀取存放在文件中的命令,而且執行它們。當它讀到文件的結尾,shell也就終止了。這種
模式主要用來運行Shell腳本.啓動後,Bash檢查$BASH_ENV變量,若定義,這執行該變量指定文件
中包含的命令.
Bash 的激活選項
-c string 該選項代表string中包含了一條命令.如 bash -c ls ~
-i 使Bash以交互式方式運行
-r 使Bash以受限方式運行
--login 使Bash以登陸Shell方式運行
--posix 使Bash遵循POSIX標準
--verbose 使Bash顯示全部其讀入的輸入行
--help 打印Bash的使用信息
--version 打印版本信息
--noprofile
--norc
--rcfile file