第八天 set shopt

set shopt

set命令可以用來定製shell環境,使用選項“o”來打開或者關閉選項。例如打開選項:set -o 選項,關閉選項目:set +o 選項。

shopt命令是set命令的一種替代,很多方面都和set命令一樣,但它增加了很多選項。可有使用“-p”選項來查看shopt選項的設置。“-u”開 關表示一個復位的選項,“-s”表示選項當前被設置。

內置set命令選項

選項名 快捷開關 含義
allexport -a 從這個選項中被設置開始就自動標明要輸出的新變量或修改過的變量,直至選項被複位
braceexpand -B打開花括號擴展,它是一個默認設置
emacs  使用emacs內置編輯器進行命令行編輯,是一個默認設置
errexit-e 當命令返回一個非零退出狀態(失敗)時退出。讀取初始化文件時不設置
histexpand -H 執行歷史替換時打開!和!!擴展,是一個默認設置
history  打開命令行歷史、默認爲打開
ignoreeof  禁止用EOF(Ctrl+D)鍵退出shell。必須鍵入exit才能退出。等價於設置shell變量IGNOREEOF=10
keyword -k  將關鍵字參數放到命令的環境中
interactive-comments 對於交互式shell,把#符後面的文本作爲註釋
monitor-m 設置作業控制
noclobber-C 防止文件在重定向時被重寫
noexec-n 讀命令,但不執行。用來檢查腳本的語法。交互式運行時不開啓
noglob -d 禁止用路徑名擴展。即關閉通配符
notify-b 後臺作業完成時通知用戶
nounset-u  擴展一個未設置的變量時顯示一個錯誤信息
onecmd-t 在讀取和執行命令後退出
physical-P  設置時,在鍵入cd或pwd禁止符號鏈接。用物理目錄代替
privileged-p  設置後,shell不讀取.profile或ENV文件,且不從環境繼承shell函數,將自動爲setuid腳本開啓特權
verbose -v 爲調試打開verbose模式
vi 使用vi內置編輯器進行命令行編輯
xtrace-x 爲調試打開echo模式


shopt命令選項

選項 含義
cdable_vars如果給cd內置命令的參數不是一個目錄,就假設它是一個變量名,變量的值是將要轉換到的目錄
cdspell 糾正cd命令中目錄名的較小拼寫錯誤。檢查的錯誤包括顛倒順序的字符,遺漏的字符以及重複的字符。如果知道一處修改,正確的路徑就打印出,命令將繼續。只 用於交互式shell
checkhashbash在試圖執行一個命令前,先在哈希表中尋找,以確定命令是否存在。如果命令不存在,就執行正常路徑搜索
checkwinsizebash在每個命令後檢查窗口大小,如果有必要,就更新LINES和COLUMNS的值
cmdhistbash試圖將一個多行命令的所有行保存在同一個歷史項中。這使得多行命令的重新編輯更方便
dotglobbash在文件名擴展的結果中包括以點(.)開頭的文件名
execfail 如果一個交互式shell不能執行指定給exec內置命令作爲參數的文件,它不會退出。如果exec失敗,一個交互式shell不會退出
expand_aliases 別名被擴展。默認爲打開
extglob打開擴展的模式匹配特徵(正常的表達式元字符來自Korn shell的文件名擴展)
histappend  當shell退出時,歷史清單將添加到以HISTFILE變量的值命名的文件中,而不是覆蓋文件
histreedit 如果readline正被使用,用戶有機會重新編輯一個失敗的歷史替換
histverify 如果設置,且readline正被使用,歷史替換的結果不會立即傳遞給shell解析器。而是將結果行裝入readline編輯緩衝區中,允許進一步修 改
hostcomplete  如果設置,且readine正被使用,當正在完成一個包含@的詞時bash將試圖執行主機名補全。默認爲打開
huponexit  如果設置,當一個交互式登陸shell退出時,bash將發送一個SIGHUP(掛起信號)給所有的作業
interactive_comments  在一個交互式shell中,允許以#開頭的詞以及同一行中其他的字符被忽略。默認爲打開
lithist  如果打開,且cmdhist選項也打開,多行命令將用嵌入的換行符保存到歷史中,而無需在可能的地方用分號來分隔
mailwarn 如果設置,且bash用來檢查郵件的文件自從上次檢查後已經被訪問,將顯示消息“The mail in mailfile has been read”
nocaseglob 如果設置,當執行文件名擴展時,bash在不區分大小寫的方式下匹配文件名
nullglob如果設置,bash允許沒有匹配任何文件的文件名模式擴展成一個空串,而不是它們本身
promptvars 如果設置,提示串在被擴展後再經歷變量和參量擴展。默認爲打開
restricted_shell  如果shell在受限模式下啓動就設置這個選項。該值不能被改變。當執行啓動文件時,不能復位該選項,允許啓動文件發現shell是否是受限的
sourcepath 如果設置,source內置命令使用PATH的值來尋找包含作爲參數提供的文件的目錄。默認爲打開
source 點(.)的同義詞
shift_verbose 如果該選項設置,當移動計數超過位置參量個數時,shift內置命令將打印一個錯誤消息

自Bash 3.1版開始,引入新選項 nocasematch,可讓Bash在對比樣式時忽略大小寫。

shopt -s nocasematch  #打開選項

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