前言
本文為 RH033 Unit12 Configuring the Bash Shell 筆記。Environment Variables
- env: 查看目前 Shell 的環境變數。
- set: Dump 目前在 記憶體 中所有變數。
- export: 在目前 Shell 中重設環境變數 (離開該 Shell 後設定便消失)。
# echo $LANG //顯示目前環境變數中語系
en_US.UTF-8
# export LANG=zh_TW.UTF-8 //改變目前 Shell 中語系的環境變數
# echo $LANG //再次顯示目前環境變數中語系
zh_TW.UTF-8
Some Common Variables
可利用下列參數來調整您的提示字元符號 (PS1) 及顯示的內容。- \W: 相對路徑 (最後一個資料夾)。
- \w: 絕對路徑。
- \t: 時間。
- \h: 主機名稱 (Host)。
- \u: 使用者名稱 (User Name)。
- \$: 一般使用者提示字元符號 $ 而超級使用者 Root 的提示字元符號則為 #。
# echo $PS1 //顯示目前環境變數中提示字元設定
[\u@\h \W]\$
# export PS1="[\u@\h \t \W]\$" //將時間參數加入
[root@localhost 15:31:10 ~]$
Aliases
別名 (Aliases) 的使用,我們可以輕易客製化自已想要的指令名稱達到想要達到的功能,如下透過 aliases 功能建立 see 指令而輸入此指令則等於 ls -l。# alias //顯示目前別名設定
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
# see //執行 see 指令
-bash: see: command not found //目前的 Bash Sehll 不認識此指令
# alias see='ls -l' //建立別名 see 指令內容等於執行 ls -l
# alias see //查看 alias
alias see='ls -l'
# see //執行 see 指令,結果跟執行 ls -l 一樣
total 80
-rw------- 1 root root 1482 Sep 10 11:57 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Sep 10 13:27 Desktop
-rw-r--r-- 1 root root 38677 Sep 10 11:57 install.log
-rw-r--r-- 1 root root 4399 Sep 10 11:19 install.log.syslog
drwxr-xr-x 2 root root 4096 Sep 11 15:06 test
Preventing Expansion
跳脫字元 (\) 可以有效防止某些指令擴大執行,或者說跳脫該功能例如我們想要顯示錢號 ($) 就必須使用跳脫字元。# echo "The Ice Cream is $100" //未加跳脫字元時系統會認為是錯誤變數名稱 $1
The Ice Cream is 00
# echo "The Ice Cream is \$100" //加上跳脫字元後即可正確顯示
The Ice Cream is $100
Bash startup task profile and aliases
前面提到設定環境變數 (Environment Variables) 及別名 (Aliases) 當您設定完成後便可開始開心的使用您的設定,但只要離開該 Shell 則設定便會失效,那該如何保持這些設定呢? 答案為設定至系統該 Shell 的 profile 及 aliases 檔案中。下列為 Bash Shell 預設登入時讀取 Profile 及 Aliases 檔案的順序: (Login Bash Shell)
- /etc/profile: 系統變數 (/etc/profile.d/*.sh)。
- ~/.bash_profile: 個人變數。
- ~/.bashrc: 個人 Aliases。
- /etc/bashrc: 系統 Aliases。
若是 Non-login Shell 則僅會讀取 Aliases 檔案:
- ~/.bashrc: 個人 Aliases。
- /etc/bashrc: 系統 Aliases。
若修改上述 Profile 及 Aliases 檔案內容後希望變更馬上生效時可利用上一章教到的指令 (source or .)。
# . /etc/bashrc
# source /etc/bashrc
補充:快速置換上一行指令字元
有時我們想要打的指令很類似時我們可以利用 ^ 符號來達成快速置換上一行指令字元的目的,如下我們將停止 cups 服務的 stop 二個字元 op 快速置換為 art 就變成了 start 了。# service cups stop
Stopping cups: [ OK ]
# ^op^art //將 op 置換為 art 即變成 start
service cups start
Starting cups: [ OK ]