在之前有提到使用 file 以及 alias 的方式來打造個人化的 shell 環境,已經可以符合大多數人的需求,不過這邊要介紹的是更進一步,修改 bash 的設定參數,讓 bash 中某些功能運作的方式有所變更;而 bash 中有許多功能選項可以將其設定為開啟(on)或是關閉(off),透過開啟或關閉某些功能,就可以修改 bash 運作的方式囉!
以下介紹幾個 bash 中可設定的功能:(以 Ubuntu 7.04 為例)
名稱 | 說明 | 預設 |
emace | 預設進入 emace 編輯模式 | on |
ignoreeof | 不允許使用者直接使用 Ctrl+D 登出,必須下登出的指令 | off |
noclobber | 不允許 I/O redirect 覆寫已經存在的檔案 | off |
noglob | 停用萬用字元(例如:*、?....等等) parse 的功能 | off |
nounset | 當使用一個未定義變數時,顯示錯誤訊息 | off |
vi | 預設進入 vi 編輯模式 | off |
當然還有其他 option,一共有二十來個,若想知道詳細的資訊,可以查詢 bash 的 manpage 。
恩....講了半天,好像沒講到要怎麼修改選項..........
在 bash 2.0 版以後,提供了一個好用的 command,叫做「shopt」,就是專門用來變更 bash 的功能設定;可以透過此指令開啟或關閉上面介紹的 bash 功能,不過這僅是為了相容性而保留下來的功能而已,因為 shopt 有提供許多額外功能選項來開啟 bash 中的功能,以下簡單介紹幾個功能選項:(以 CentOS 5.0 為例)
名稱 | 說明 | 預設 |
cdable_vars | 使用 cd 命令時,可以用變數來指令要變換的目錄名稱 | off |
checkhash | 執行命令時,會檢查系統中的 hash table 判斷是否有被修改過 | off |
cmdhist | 紀錄 command history | on |
dotglob | 將檔名中的「.」視為路徑 | off |
execfail | 執行到無法執行的檔案,不自動跳出 | off |
histappend | 附加 command history,而非覆寫 | off |
lithist | 若功能啟用,且 cmdhist 功能也啟用,一次執行多個指令時,在 history 中會被紀錄為逐一執行多個命令 | off |
mailwarn | 檢查 mail 是否已經讀取了 | off |
而開啟或關閉的指令如下:
# 開啟某功能
shell> shopt -s <功能名稱>
# 關閉某功能
shell> shopt -u <功能名稱>
參考資料:
沒有留言:
張貼留言