shopt命令是set命令的一種替代,很多方面都和set命令一樣,但它增加了很多選項(xiàng)??梢允褂谩?p”選項(xiàng)來查看shopt選項(xiàng)的設(shè)置?!?u”開關(guān)表示一個(gè)復(fù)位的選項(xiàng),“-s”表示選項(xiàng)當(dāng)前被設(shè)置。
[root@localhost ~]# shopt -p #查看當(dāng)前設(shè)置情況 shopt -u cdable_vars shopt -u cdspell shopt -u checkhash shopt -s checkwinsize shopt -s cmdhist shopt -u dotglob shopt -u execfail shopt -s expand_aliases shopt -u extdebug shopt -u extglob shopt -s extquote shopt -u failglob shopt -s force_fignore shopt -u gnu_errfmt shopt -u histreedit shopt -u histappend shopt -u histverify shopt -s hostcomplete shopt -u huponexit shopt -s interactive_comments shopt -u lithist shopt -s login_shell shopt -u mailwarn shopt -u no_empty_cmd_completion shopt -u nocaseglob shopt -u nullglob shopt -s progcomp shopt -s promptvars shopt -u restricted_shell shopt -u shift_verbose shopt -s sourcepath shopt -u xpg_echo
[root@localhost ~]# shopt -s cdspell #把cdspell選項(xiàng)打開 [root@localhost ~]# shopt -p cdspell #打印cdspell設(shè)置 shopt -s cdspell [root@localhost ~]# cd /raot #故意拼寫錯(cuò)誤 /root [root@localhost ~]# pwd #查看當(dāng)前目錄 /root [root@localhost ~]# cd /usr/loca/bin #故意拼寫錯(cuò)誤 /usr/local/bin [root@localhost bin]# pwd #查看當(dāng)前目錄 /usr/local/bin [root@localhost bin]# shopt -u cdspell #把cdspell選項(xiàng)打開 [root@localhost bin]# shopt -p cdspell #打印cdspell設(shè)置 shopt -u cdspell [root@localhost bin]# cd /raot #故意拼寫錯(cuò)誤 -bash: cd: /raot: 沒有那個(gè)文件或目錄 #進(jìn)入目錄錯(cuò)誤
|
shopt命令選項(xiàng)
選項(xiàng) |
含義 |
cdable_vars |
如果給cd內(nèi)置命令的參數(shù)不是一個(gè)目錄,就假設(shè)它是一個(gè)變量名,變量的值是將要轉(zhuǎn)換到的目錄 |
cdspell |
糾正cd命令中目錄名的較小拼寫錯(cuò)誤。檢查的錯(cuò)誤包括顛倒順序的字符,遺漏的字符以及重復(fù)的字符。如果知道一處修改,正確的路徑就打印出,命令將繼續(xù)。只用于交互式shell |
checkhash |
bash在試圖執(zhí)行一個(gè)命令前,先在哈希表中尋找,以確定命令是否存在。如果命令不存在,就執(zhí)行正常路徑搜索 |
checkwinsize |
bash在每個(gè)命令后檢查窗口大小,如果有必要,就更新LINES和COLUMNS的值 |
cmdhist |
bash試圖將一個(gè)多行命令的所有行保存在同一個(gè)歷史項(xiàng)中。這使得多行命令的重新編輯更方便 |
dotglob |
bash在文件名擴(kuò)展的結(jié)果中包括以點(diǎn)(.)開頭的文件名 |
execfail |
如果一個(gè)交互式shell不能執(zhí)行指定給exec內(nèi)置命令作為參數(shù)的文件,它不會退出。如果exec失敗,一個(gè)交互式shell不會退出 |
expand_aliases |
別名被擴(kuò)展。默認(rèn)為打開 |
extglob |
打開擴(kuò)展的模式匹配特征(正常的表達(dá)式元字符來自Korn shell的文件名擴(kuò)展) |
histappend |
當(dāng)shell退出時(shí),歷史清單將添加到以HISTFILE變量的值命名的文件中,而不是覆蓋文件 |
histreedit |
如果readline正被使用,用戶有機(jī)會重新編輯一個(gè)失敗的歷史替換 |
histverify |
如果設(shè)置,且readline正被使用,歷史替換的結(jié)果不會立即傳遞給shell解析器。而是將結(jié)果行裝入readline編輯緩沖區(qū)中,允許進(jìn)一步修改 |
hostcomplete |
如果設(shè)置,且readine正被使用,當(dāng)正在完成一個(gè)包含@的詞時(shí)bash將試圖執(zhí)行主機(jī)名補(bǔ)全。默認(rèn)為打開 |
huponexit |
如果設(shè)置,當(dāng)一個(gè)交互式登陸shell退出時(shí),bash將發(fā)送一個(gè)SIGHUP(掛起信號)給所有的作業(yè) |
interactive_comments |
在一個(gè)交互式shell中,允許以#開頭的詞以及同一行中其他的字符被忽略。默認(rèn)為打開 |
lithist |
如果打開,且cmdhist選項(xiàng)也打開,多行命令將用嵌入的換行符保存到歷史中,而無需在可能的地方用分號來分隔 |
mailwarn |
如果設(shè)置,且bash用來檢查郵件的文件自從上次檢查后已經(jīng)被訪問,將顯示消息“The mail in mailfile has been read” |
nocaseglob |
如果設(shè)置,當(dāng)執(zhí)行文件名擴(kuò)展時(shí),bash在不區(qū)分大小寫的方式下匹配文件名 |
nullglob |
如果設(shè)置,bash允許沒有匹配任何文件的文件名模式擴(kuò)展成一個(gè)空串,而不是它們本身 |
promptvars |
如果設(shè)置,提示串在被擴(kuò)展后再經(jīng)歷變量和參量擴(kuò)展。默認(rèn)為打開 |
restricted_shell |
如果shell在受限模式下啟動就設(shè)置這個(gè)選項(xiàng)。該值不能被改變。當(dāng)執(zhí)行啟動文件時(shí),不能復(fù)位該選項(xiàng),允許啟動文件發(fā)現(xiàn)shell是否是受限的 |
sourcepath |
如果設(shè)置,source內(nèi)置命令使用PATH的值來尋找包含作為參數(shù)提供的文件的目錄。默認(rèn)為打開 |
source |
點(diǎn)(.)的同義詞 |
shift_verbose |
如果該選項(xiàng)設(shè)置,當(dāng)移動計(jì)數(shù)超過位置參量個(gè)數(shù)時(shí),shift內(nèi)置命令將打印一個(gè)錯(cuò)誤消息 |
自Bash 3.1版開始,引入新選項(xiàng) nocasematch,可讓Bash在對比樣式時(shí)忽略大小寫。
shopt -s nocasematch #打開選項(xiàng)
|