歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> shell內建命令Shopt

shell內建命令Shopt

日期:2017/3/1 14:05:18   编辑:SHELL編程
shell內建命令Shopt 此內建命令改變額外的shell的可選行為。 shopt shopt [-pqsu] [-o] [optname …] 切換那些用來控制shell的各種可選的行為的變量的值。不帶選項,或使用-p選項,則顯示所有可設置的選項的列表,同時表明該選項是否被設置。 -p選項以可重用為輸入的形式來顯示輸出。其他選項有以下含義: -s 啟用每個optname。(set) -u 關閉每個optname。(unset) -q 抑制正常輸出;返回狀態表示optname是否啟用。當有-q選項,且如果有多個optname參數時,若所有optname被啟用,則返回值是零;否則返回非零值。 -o 限制optname的值,僅可以使用內建命令set的-o選項所定義的值。(見內建命令set) 如果使用-s或者-u,且沒有optname參數,則顯示結果的范圍僅限於那些啟用或關閉的相應選項。 除非特別說明,shopt選項默認是關閉的。 列出選項時,如果所有optname都是啟用狀態,則返回值是0,否則是非零值。在設置或取消選項時,返回狀態是零,除非某個optname不是有效的shell選項。 shopt的選項列表如下: autocd 如果設置的話,某個目錄的名字被當做cd命令的參數執行。此選項僅在交互式shell中使用。 cdable_vars 如果設置的話,內建命令cd的不是目錄名的參數,被當做變量名,該變量的值就是要被切換到的目錄。 cdspell 如果設置,cd命令的目錄部分的小的拼寫錯誤將得到更正。這些錯誤包括顛倒的字符,缺少的字符,和多余的一個字符。如果能找到校正後的結果,則校正後的路徑被打印出來,並執行命令。此選項僅用於交互式shell。 checkhash 如果設置,Bash在執行該命令前,在哈希表中檢查是否存在該命令。如果在哈希表中不存在,則執行一個正常的路徑搜索。 checkjobs 如果設置,Bash在退出交互shell前,列出所有停止的和正在運行的作業的狀態。如果有任何作業正在運行,這將導致退出的時間推遲到第二次沒有干預命令的退出(參見作業控制)。如果有任何作業被停止,shell總是推遲退出。 checkwinsize 如果設置,Bash在每個命令後,檢查窗口大小,如果必要的話,更新LINES和COLUMNS的值。 cmdhist 如果設置,Bash在同一個歷史實體裡面保存一個多行命令的所有行的內容。這樣便於重新編輯多行命令。 compat31 如果設置,Bash改變它的行為以符合3.1版本,條件命令操作符‘=~’被引號包括的參數的方式。 compat32 如果設置,Bash改變它的行為以符合3.2版本,當使用‘[[’條件命令的'<' 和 '>'操作符時,區域特定字符串比較的方式。bash-4.0之前版本的Bash使用ASCII定序和strcmp(3);bash-4.1及之後的版本使用當前區域設置的定序和strcoll(3)。 compat40 如果設置,Bash改變它的行為以符合4.0版本,當使用‘[[’條件命令的'<' 和 '>'操作符時,區域特定字符串比較的方式(見上一個項目),以及對中斷一個命令列表的影響。 compat41 如果設置,Bash在POSIX模式時,將位於雙引號參數擴展中的單引號當做特殊字符。單引號必須匹配(偶數個),單引號之間的字符被認為是引號包圍的。這是POSIX模式4.1版本的行為。其他默認的Bash的行為仍然和以前的版本一樣。 dirspell 如果設置,當輸入的目錄名不存在時,Bash將在輸入過程中自動修改拼寫。 dotglob 如果設置,Bash在文件名擴展的結果中包含以‘.’開頭的文件名。 execfail 如果設置,非交互shell在不能執行內建命令exec的參數所指定的文件時,將不會退出。如果exec失敗,交互式shell不退出。 expand_aliases 如果設置,所有別名以下述“別名”節的描述擴展。交互式shell中,此選項默認啟用。 extdebug 如果設置,啟用調試器可用的行為: 1.declare內建命令的-F選項,顯示作為參數提供的每個對應的函數名的源文件和行號。 2.如果使用DEBUG陷阱運行的命令返回一個非零值,下一個命令被跳過且不執行。 3.如果使用DEBUG陷阱運行的命令返回一個值2,並且shell在子過程中(是使用.或者source命令執行)執行,則 模擬一個對return的調用。 4.BASH_ARGC 和 BASH_ARGV 按照他們的描述更新。(參見Bash變量) 5.啟用函數跟蹤:命令替換,shell函數,和使用( command )調用的子shell繼承DEBUG和RETURN陷阱。 6.啟用錯誤跟蹤:命令替換,shell函數,和使用( command )調用的子shell繼承ERR陷阱。 extglob 如果設置,啟用上述的擴展模式匹配功能。(見模式匹配) extquote 如果設置,在雙引號中的 ${parameter} 擴展中的$'string' 和 $"string" 被執行引號擴展。此選項默認啟用。 failglob 如果設置,文件名擴展時發生的模式匹配失敗會引發擴展錯誤。 force_fignore 如果設置,當執行單詞補全時,由FIGNORE指定的那些後綴的shell變量將忽略單詞,即使被忽略的單詞是唯一的補全候補。關於FIGNORE,請查看bash變量章節。該選項默認啟用。 globstar 如果設置,在文件名擴展中使用的模式“**”將匹配所有文件和0個或多個目錄和子目錄。如果模式以‘/’結尾,則僅僅匹配目錄和子目錄。 gnu_errfmt 如果設置,shell錯誤信息將按照標准GNU錯誤信息格式輸出。 histappend 如果設置,當shell退出時,命令歷史列表將追加到由變量HISTFILE設定的文件中,而不是覆蓋該文件。 histreedit 如果設置,將使用Readline,用戶將有機會重新編輯失敗的命令歷史替換。 histverify 如果設置,將使用Readline,命令歷史替換的結果不會立即傳遞給shell解釋器。而是被加載到Readline緩沖區,以允許將來修改。 hostcomplete 如果設置,將使用Readline,當單詞含有‘@’時, Bash會嘗試執行主機名完成。(請參看“命令完成”)。該選項默認啟用。 huponexit 如果設置,當交互shell退出時,Bash將發送SIGHUP到所有作業。(請參看“信號”) interactive_comments 在交互shell中,以‘#’開頭的單詞將導致該單詞及該行該單詞之後的所有字符都被忽略。該選項默認開啟。 lastpipe 如果設置,並且作業控制未激活,則運行管道的最後一個命令的shell不在當前shell環境的後台執行。 lithist 如果設置,並且cmdhist選項被設置了,則多行命令被保存到歷史中時,包含換行符,而不是使用分號代替。 login_shell 如果shell是從登錄shell啟動的,則該shell設置此選項。(見“調用 Bash”)該值不可更改。 mailwarn 如果設置,並且Bash用來檢測郵件的文件,在上次檢測之後再次被存取時,則顯示“The mail in mail file has been read”。 no_empty_cmd_completion 如果設置,並且使用了Readline,Bash在空行上不再試圖從PATH中搜索可用的命令完成。 nocaseglob 如果設置,執行文件名擴展時,Bash以大小寫不敏感方式匹配文件名。 nocasematch 如果設置,執行case或者 [[ 條件命令時,Bash以大小寫不敏感方式匹配模式。 nullglob 如果設置,Bash允許不匹配任何文件的文件名模式被擴展為一個空字符串,而不是模式本身。 progcomp 如果設置,則可編程自動完成工具被激活。(見“可編程自動完成”)。此選項默認激活。 promptvars 如果設置,則提示符字符串在擴展後,還要執行參數擴展,命令替換,算數擴展和引號去除。(見打印提示符)。此選項默認激活。 restricted_shell 如果shell以限制模式被啟動,則設置此選項。(見“限制shell”)。該值不可更改。啟動文件被執行時,不重置此選項,以允許啟動文件能夠發現shell是否是限制的。 shift_verbose 如果設置,當shift計數器超過位置參數個數時,shift內建命令打印一條錯誤信息。 sourcepath 如果設置,source內建命令使用PATH的值,去尋找作為參數的文件名所在的目錄。此選項默認激活。 xpg_echo 如果設置,echo內建命令默認擴展反斜槓轉義序列。 如果所有optnames都激活了,則列出選項的命令返回狀態為0,否則為非零值。在設置或者取消選項的設置時返回狀態是0,除非optname不是有效的shell選項。
Copyright © Linux教程網 All Rights Reserved