2007年5月20日 星期日

[BASH] 打造自己的 shell 環境 (2) - Shell Option

對 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 <功能名稱>


參考資料:
  1. Linux / Unix Command: shopt
  2. Linux / Unix Command: bash

沒有留言:

張貼留言