shell的各种运行模式?
交互式shell和非交互式shell,login shell和non-login shell。首先,這是兩個不同的維度來劃分的,一個是是否交互式,另一個是是否登錄。。
交互式模式就是shell等待你的輸入,并且執行你提交的命令。
非交互式模式,腳本。
login shell:是需要用戶名、密碼登錄后才能進入的shell(或者通過”–login”選項生成的shell)
- 登錄系統時獲得的頂層shell,無論是通過本地終端登錄,還是通過網絡ssh登錄。這種情況下獲得的login shell是一個交互式shell。
- 在終端下使用--login選項調用bash,可以獲得一個交互式login shell。
- 在腳本中使用--login選項調用bash(比如在shell腳本第一行做如下指定:#!/bin/bash --login),此時得到一個非交互式的login shell。
- 使用"su -"切換到指定用戶時,獲得此用戶的login shell。如果不使用"-",則獲得non-login shell。
non-login shell:當然就不需要輸入用戶名和密碼即可打開的Shell,例如:直接命令“bash”就是打開一個新的非登錄shell,在Gnome或KDE中打開一個“終端”(terminal)窗口程序也是一個非登錄shell。
?
non-login shell與login shell的主要區別在于它們啟動時會讀取不同的配置文件,從而導致環境不一樣。login shell啟動時首先讀取/etc/profile全局配置,然后依次查找~/.bash_profile、~/.bash_login、~/.profile三個配置文件中的一個,并且讀取第一個找到的忽略余下的。login shell退出時讀取并執行~/.bash_logout中的命令。
交互式的non-login shell啟動時讀取~/.bashrc資源文件。非交互式的non-login shell不讀取上述所有配置文件,而是查找環境變量BASH_ENV,讀取并執行BASH_ENV指向的文件中的命令。
(1)login shell讀取的配置文件
/etc/profile 該文件來設置系統的整體環境,通常是一些環境變量的配置。
~/.bash_profile或~/.bash_login或~/.profile三者中的一個,該文件是用戶個人設置(2)non-login shell讀取的配置文件
~/.bashrc
通常我們要定制一些配置時,將配置寫在~/.bashrc中,然后在~/.bash_profile中讀取~/.bashrc,這樣可以保證login shell和交互式non-login shell得到相同的配置。至于/etc/profile就不要輕易去改啦,畢竟會影響系統全局的配置。
轉載于:https://www.cnblogs.com/naodong/p/6940785.html
總結
以上是生活随笔為你收集整理的shell的各种运行模式?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Z和神迹冰罗皇哪个厉害
- 下一篇: 为啥驯龙高手3是3月1日播出23号就可以