對 Linux 來說,bash 也是在運作中的 process,而其運作時也是有其相關的設定存在。
在之前有提到使用 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 <功能名稱>
參考資料: