shell會涉及兩個引數,互動/非互動;登入/分登陸;他們是可以交叉組合的,比如你是互動,可以登陸,也可以不登入...
由於他們的關係可以相互組合,為了清楚以下先針對單獨情況討論。
non-interactive 非互動使用者 預設無輸入輸出。一般是由程式產生的。命令需指定fullpath。(a呼叫b,簡寫成a-->b)
非互動可指定登陸,可以指定輸入輸出。不會載入~/.bashrc,而會載入 bash_env /etc/bashrc --> /etc/profile.d/*sh
interactive 互動使用者 帶輸入輸出的。互動系統會載入prompt變數,如ps1(也就是你的command字首)。如要求使用interactive環境,可用[ -z "$ps1" ] && return 進行校驗。
使用互動的情況,即平常的shell互動介面,如 xshell虛擬終端,或gnome可視環境下的終端(可以登陸或不登陸),缺省會讀取~/.bashrc-->/etc/bashrc --> /etc/profile.d/*sh
non-login非登陸使用者。在gome下,你可以開啟乙個非登陸的終端,或者在su使用者的時候不加 "-" ,他們都屬於互動式非登陸bash。
非登陸不會讀取帶profile的檔案,如/etc/profile或~/.bash_profile,但會讀取~/.bashrc-->/etc/bashrc --> /etc/profile.d/*sh
login登陸使用者 這可能最常見的,需要驗證登陸的使用者,也是載入最全的
/etc/profile, ~/.profile, ~/.bash_login 和 ~/.bash_profile -->~/.bashrc -->/etc/bashrc
登出時 ~/.bash_logout
為了方便理解,在此以對比的方法進行區別,如有疑問歡迎指出討論
載入比較
登入vs非登陸,多載入一些profile:/etc/profile,~/.profile, ~/.bash_(login/logout)
互動vs非互動,多載入乙個bashrc:~/.bashrc
兩種檔案的型別
觀察下載入檔案一般是bash和profile的各種組合,那麼問題來了,profile和bashrc是幹啥的?
bashrc
rc=resource,bashrc就是bash專用rc,如果其他版本的shell就呼叫其他的,如cshrc
profile
使用者設定環境變數的地方,你可以有多個shell(bash,zsh,csh)但是profile是跟使用者的
呼叫關係
~/.bash_profile --> ~/.bashrc
~/.bashrc --> /etc/bashrc
/etc/bashrc --> /etc/profile.d/*sh
/etc/profile --> /etc/profile.d/*sh
而a能呼叫b,那麼說明a的載入內容多於b,即執行a的要求更高
對於~/.bash_profile --> ~/.bashrc
~/.bash_profile 需要登陸,不登入執行的是 ~/.bashrc
對於~/.bashrc --> /etc/bashrc
~/.bashrc 需要互動,非互動式執行的是 /etc/bashrc
對於/etc/profile.d/*sh,每個環境最終都會呼叫執行
進入後可以看到,是一些以基礎命令.sh的環境變數
系統區別
以上均基於rehl,對於debian會有區別,已知的是:
/etc/bashrc(rhel系)=/etc/bash.bashrc (debian系)
/etc/bashrc 呼叫
/etc/profile.d/*sh (rhel系)
/etc/profile 呼叫
/etc/bashrc (debian系)
因此,更改配置更推薦寫入~/.bashrc,登陸使用者會在~/.bash_profile中讀取 ~/.bashrc,同時保證non-login也能載入,而不是加在/etc/profile
參考
linux設定開機自動載入檔案
在linux中有個rc.local檔案,linux在啟動時會自動載入其中的內容,當作命令執行,所以只需要將需要開機執行的命令寫在其中,就可以實現開機自動載入檔案或開啟服務。rc.local路徑 etc rc.local 1.開啟檔案 vim etc rc.local 2.寫入命令 touch tmp...
關於分散載入檔案
分散載入 scatlerloading 即工程裡的.scf檔案。在scatterfile中可以為每乙個 或資料區在裝載和執行時指定不同的儲存區域位址,scatlertoading的儲存區塊可以分成二種型別 裝載區 當系統啟動或載入時應用程式的存放區。執行區 系統啟動後,應用程式進行執行和資料訪問的儲...
UTL FILE 載入檔案處理
create or replace procedureloadfiledata p path varchar2,p filename varchar2 as v filehandle utl file.file type 定義乙個檔案控制代碼 v text varchar2 100 存放文字 v n...