[root@dywHome2 ~]# export declare -x DISPLAY=":0" declare -x ENV="/root/.bashrc" declare -x GCONF_TMPDIR="/tmp" declare -x G_FILENAME_ENCODING="@locale" declare -x HISTCONTROL="ignoredups" declare -x HISTSIZE="1000" declare -x HOME="/root" declare -x HOSTNAME="dywHome2" declare -x INPUTRC="/etc/inputrc" declare -x LANG="en_US.UTF-8" 中間省略 declare -x USER="root" declare -x USERNAME="root" declare -x XAUTHORITY="/home/dywang/.Xauthority"
#範例:如何讓 name=csie 用在下個 shell 的程序? [root@dywOffice ~]# echo $SHLVL %*<==列出目前 shell 的 level*) 1 [root@dywOffice ~]# name=csie [root@dywOffice ~]# bash %*<==進入到所謂的子程序*) [root@dywOffice ~]# echo $SHLVL %*<==列出目前 shell 的 level*) 2 [root@dywOffice ~]# echo $name %*<==並沒有剛剛設定的內容。*) [root@dywOffice ~]# exit %*<==離開剛剛的子程序*) [root@dywOffice ~]# echo $SHLVL %*<==列出目前 shell 的 level*) 1 [root@dywOffice ~]# export name [root@dywOffice ~]# bash %*<==進入到子程序*) [root@dywOffice ~]# echo $SHLVL %*<==列出目前 shell 的 level*) 2 [root@dywOffice ~]# echo $name %*<==出現設定值了。*) [root@dywOffice ~]# exit %*<==離開剛剛的子程序*) # 一般狀態下,父程序的自訂變數無法在子程序內使用的。 # 透過 export 將變數變成環境變數後,才能夠在子程序下應用
[root@linux ~]# env HOSTNAME=dywOffice.deyu.wang %*<== 這部主機的主機名稱*) SHELL=/bin/bash %*<== 目前這個環境下,使用的 Shell 是哪一個程式?*) TERM=xterm %*<== 這個終端機使用的環境類型*) HISTSIZE=1000 %*<== 『記錄指令的筆數』 預設可記錄 1000 筆*) USER=root %*<== 使用者的名稱。*) LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33; 01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*. exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00; 32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00; 31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00; 31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00; 35:*.xpm=00;35:*.png=00;35:*.tif=00;35: %*<== 一些顏色顯示*) ENV=/root/.bashrc %*<== 使用者 root 的個人環境設定檔*) MAIL=/var/spool/mail/root %*<== 這個使用者所取用的 mailbox 位置*) /usr/local/bin:/usr/local/sbin:/root/bin %*<== 執行檔指令搜尋路徑*) INPUTRC=/etc/inputrc %*<== 與鍵盤按鍵功能有關。可以設定特殊按鍵。*) PWD=/root %*<== 目前使用者所在的工作目錄 (利用 pwd 取出。)*) LANG=en_US.UTF-8 %*<== 使用語系*) HOME=/root %*<== 使用者的家目錄*) _=/bin/env %*<== 上一次使用的指令的最後一個參數(或指令本身)*)
[root@dywHome2 ~]# name=CSIE [root@dywHome2 ~]# echo $name CSIE [root@dywHome2 ~]# env name=CYUT 前面省略 name=CYUT [root@dywHome2 ~]# echo $name CSIE
[root@linux ~]# set
BASH=/bin/bash %*<== bash 的主程式放置路徑*)
BASH_VERSINFO=([0]="3" [1]="00" [2]="16" [3]="1" [4]="release"
[5]="i386-redhat-linux-gnu") %*<== bash 的版本*)
BASH_VERSION='3.00.16(1)-release' %*<== bash 的版本*)
COLORS=/etc/DIR_COLORS.xterm %*<== 使用的顏色紀錄檔案*)
COLUMNS=115 %*<== 終端機環境的欄位之字元長度*)
HISTFILE=/root/.bash_history %*<== 歷史命令記錄的放置檔案,隱藏檔*)
HISTFILESIZE=1000 %*<== 存起來(與上個變數有關)的檔案之指令的最大紀錄筆數。*)
HISTSIZE=1000 %*<== 目前環境下,可記錄的歷史命令最大筆數。*)
HOSTTYPE=i386 %*<== 主機安裝的軟體主要類型。*)
IFS=$' \t\n' %*<== 預設的分隔符號*)
LINES=35 %*<== 終端機的最大行數*)
MACHTYPE=i386-redhat-linux-gnu %*<== 安裝的機器類型*)
MAILCHECK=60 %*<== 每 60 秒掃瞄一次信箱有無新信*)
OLDPWD=/home %*<== 上個工作目錄。我們可以用 cd - 來取用這個變數。*)
OSTYPE=linux-gnu %*<== 作業系統的類型。*)
PPID=20046 %*<== 父程序的 PID*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"'
%*<== 命令提示字元。與底下也有關。*)
PS1='[\u@\h \W]\$ ' %*<== 第一層命令提示字元的設定值*)
RANDOM=13586 %*<== 亂數*)
SUPPORTED=zh_TW.UTF-8:zh_TW:zh:en_US.UTF-8 %*<== 本系統所支援的語系*)
name=csie %*<== 剛剛設定的自訂變數*)
$ %*<== 目前這個 shell 的 PID*)
? %*<== 剛剛執行完指令的回傳值。*)
0 %*<== shell 執行命令的名稱 *)
[dywang@dywOffice linuxprogram]$ echo $0 /bin/bash
[dywang@dywOffice ~ 10:51 #17]$ echo $$ 5021
[root@linux ~]# echo $SHELL /bin/bash [root@linux ~]# echo $? 0 # 因為上個指令執行過程中,並沒有錯誤,為成功的執行完畢,所以回傳 0 。 [root@linux ~]# 12name=csie -bash: 12name=csie: command not found [root@linux ~]# echo $? 127 # 發生錯誤。所以 echo $? 時,會出現錯誤的代碼,可以利用代碼來搜尋錯誤的原因。 [root@linux ~]# echo $? 0 # 又正確了?因為 "?" 只與『上一個執行指令』有關。
0~32767 的數值。
[root@linux ~]# declare -i number=$RANDOM*10/32767 ; echo $number 8 %*<== 此時會隨機取出 0~9 之間的數值。*)
\d :代表日期,格式為 Weekday Month Date,例如 "Mon Aug 1"
\H :完整的主機名稱。例如 dywOffice.deyu.wang。
\h :僅取主機名稱的第一個名字。上例為 dywOffice,.deyu.wang 被省略。
\t :顯示時間,為 24 小時格式,如: HH:MM:SS
\T :顯示時間,12 小時的時間格式。
\A :顯示時間,24 小時格式, HH:MM
\u :目前使用者的帳號名稱;
\v :BASH 的版本資訊;
\w :完整的工作目錄名稱。家目錄會以 ~ 取代;
\W :利用指令 basename 取得工作目錄名稱,所以僅會列出最後一個目錄名。
\# :下達的第幾個指令。
\$ :提示字元,如果是 root 時,提示字元為 # ,否則就是 $。
[dywang@dywOffice ~]$ PS1='[\u@\h \w \A #\#]\$ ' [dywang@dywOffice ~ 10:51 #16]$ echo $PS1 [\u@\h \w \A #\#]\$ [dywang@dywOffice ~ 10:51 #17]$
cd $linux ,結果為何?
echo $name 會出現什麼結果?
echo $name 會出現什麼結果?
echo $SHLVL
echo $name 與 env name=CYUT,產生的變數 name 內容有何不同?
echo $name 的結果為 CSIE;env name=CYUT env 的結果為 CYUT。
$,代表意義為何?
echo $? 結果為何?
0~32767 之間的一個整數
0~9 之間的數值,如何做?
number=$RANDOM*10/32767 ; echo $number
PS1='\d ',則的提示字元如何顯示?
PS1='\H ',則的提示字元如何顯示?
PS1='\h ',則的提示字元如何顯示?
PS1='\t ',則的提示字元如何顯示?
PS1='\T ',則的提示字元如何顯示?
PS1='\A ',則的提示字元如何顯示?
PS1='\u ',則的提示字元如何顯示?
PS1='\v ',則的提示字元如何顯示?
PS1='\w ',則的提示字元如何顯示?
~ 取代。
PS1='\W ',則的提示字元如何顯示?
PS1='\# ',則的提示字元如何顯示?
PS1='\$ ',則的提示字元如何顯示?
# ,否則就是 $。
[dywang@dywOffice ~ 10:51 #16]$ ,則變數 PS1 應如何設定?
PS1='[\u@\h \w \A #\#]\$ '