動態改變命令列的提示(prompt)
PROMPT_COMMAND
PROMPT_COMMAND 是 bash 的環境變數,每執行一道命令列命令後,存在此變數的指令都會被執行一遍,我們可以利用此一特性改變我們每一次的命令列提示。以下所示範的是:
- 顯示上一次執行命令的狀態碼(Exit Code)。
 - 若現行工作目錄未改變,則顯示目前的名錄名即可,否則顯示完整的路徑名。
 - 部份 code 引用原來的 Ubuntu 家目錄(home)底下的 .bashrc 的 PS1 設定,如:debian_chroot,其他系統需要作相對應的修改。
 
__var_show_dirpath__=
__var_show_dirpath__='\w'
PROMPT_COMMAND='__prompt_command__'
__prompt_command__() {
    PS1="[$?] "
    if [ "$__var_show_dirpath__" = "$PWD" ]; then
        __show_dirpath__='\W'
    else
        __show_dirpath__='\w'
        __var_show_dirpath__=$PWD
    fi
    PS1+='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]'
    PS1+=$__show_dirpath__
    PS1+='\[\033[00m\]\$ '
}
你可以將以上的程式碼嵌入進你家目錄的 .bashrc 中,重開啟 shell 便能看到效果,如以下所示:
[0] cy@cyvm:~/tmp$ pwd /home/cy/tmp [0] cy@cyvm:tmp$ ls mnt old test [0] cy@cyvm:tmp$ cd test [0] cy@cyvm:~/tmp/test$ ls
沒有留言:
張貼留言