交互式、非交互式,登陸式、非登陸式Shell

交互式Shell和非交互式Shellshell

  1. 交互式模式:在終端上執行,shell等待你的輸入,而且當即執行你提交的命令。這種模式被稱做交互式是由於shell與用戶進行交互。這種模式也是大多數用戶很是熟悉的:登陸、執行一些命令、退出。當你退出後,shell也終止了。
  2. 非交互式模式:以shell script(非交互)方式執行。在這種模式 下,shell不與你進行交互,而是讀取存放在文件中的命令,而且執行它們。當它讀到文件的結尾EOF,shell也就終止了。
  3. 能夠經過打印「$-」變量的值(表明着當前shell的選項標誌),查看其中的「i」選項(表示interactive shell)來區分交互式與非交互式shell。

登陸式Shell和非登陸式Shellbash

  1. 登陸shell:須要用戶名、密碼登陸後才能進入的shell(或者經過--login」選項生成的shell)。
  2. 非登陸shell:不須要輸入用戶名和密碼便可打開的Shell,例如:直接命令「bash」就是打開一個新的非登陸shell;在Gnome或KDE中打開一個「終端」(terminal)窗口程序也是一個非登陸shell。
  3. 退出一個登陸shell:exit或者logout;退出一個非登陸shell:只能exit。

使用啓動腳本,可讓自定義的環境一勞永逸。spa

這些腳本在shell被建立時運行根據shell是登陸shell仍是非登陸shell,所運行的啓動腳本也會不同。code

su - username是登陸shell;su username是非登陸shell(注意su - username中間有空格)。直接打開終端是非登陸shell。blog

keegen@keegensCP:~$ su - keegen
密碼: 
keegen@keegensCP:~$ echo $0
-su
keegen@keegensCP:~$ logout
keegen@keegensCP:~$ echo $0
bash

 /etc/profile 是登入shell啓動後運行的第一個啓動腳本,它只爲登入shell運行;非登入shell不會引起這個腳本。ip

登入shell加載啓動腳本的順序爲
terminal

/etc/profile → /etc/profile.d → ~/.bash_profile → ~/.bashrc → /etc/bashrc

 每一個調用的腳本會依次撤銷前一個調用腳本中的改變。it

在退出登入shell時,咱們還能夠執行某些任務,如建立自動備份、清除臨時文件。把這些任務放在.bash_logout文件中。class

非登入shell加載啓動腳本的順序
登錄

~/.bashrc → /etc/bashrc → /etc/profile.d
相關文章
相關標籤/搜索