Unix的一個重要概念是環境,被定義的環境變數。有些系統通過環境變數,還有一些由shell,或任何程式載入另一個程式。
變數是一個字串,我們分配一個值。分配的值可以是一個數位,文字,檔案名,移動裝置,或任何其他型別的資料。
例如,首先我們設定一個變數測試,然後我們使用echo命令來存取它的值:
$TEST="Unix Programming" $echo $TEST Unix Programming
需要注意的是環境變數設定,而無需使用$符號,但存取它們時,我們使用$符號作為字首。這些變數保持它們的值,直到我們設計出來shell。
當你登入到系統中,shell經過一個階段稱為初始化設定各種環境。這通常是一個兩步的過程,涉及的的shell閱讀下列檔案:
/etc/profile
profile
過程如下:
shell進行檢查,看是否存在檔案 /etc/profile檔案。
如果它存在,當shell讀取。否則,此檔案將被跳過。不顯示錯誤訊息。
shell檢查,看看是否該檔案。組態檔案存在於你的home目錄。主目錄是開始在登入後的目錄
如果它存在,當shell讀取它,否則shell跳過。不顯示錯誤訊息。
只要這兩個檔案被讀取,shell將顯示一個提示:
$
這是提示這裡你可以輸入命令,以讓他們執行。
註 - 這裡詳述shell初始化過程適用於所有的Bourne型shell,但所使用的是bash和ksh一些額外的檔案。
檔案/etc/profile檔案是由UNIX機器的系統管理員,包含shell初始化所需的資訊系統上的所有使用者。
該檔案 .profile是在你的控制之下。您可以新增盡可能多的 shell客製化資訊,只要想這個檔案。最小資訊集,需要組態包括:
使用的終端的型別
在其中定位命令的目錄的列表
列表變數,影響終端的外觀和風格。
可以檢查 .profile,在home目錄。使用vi編輯器開啟它,並檢查所有的變數設定環境。
通常情況下,使用的終端自動組態通過登入或getty程式。有時,自動組態過程中猜測終端不正確。
如果終端設定不正確,命令的輸出可能看起來很奇怪,或者可能無法正確與shell互動。
為了確保,這是沒有的情況下,大多數使用者他們的終端設定到最低共同如下:
$TERM=vt100 $
當輸入任何命令在命令提示字元下,shell也有定位才可以執行的命令。
PATH變數中指定位置的的shell看起來應該命令。一般它被設定如下:
$PATH=/bin:/usr/bin $
這裡每一個由冒號分開的各個條目,目錄。如果要求的shell來執行命令並不能找到它在PATH變數中的任何目錄中,出現類似下面的訊息:
$hello hello: not found $
有變數,如PS1和PS2在下一節討論。
命令提示字元下的shell顯示為字元儲存在變數PS1。可以改變這個變數是你想要的任何東西。只要改變它,它會被用來由shell,從這一點上。
例如,如果發出命令:
$PS1='=>' => => =>
將成為提示=>。要設定PS1的價值,因此,它顯示的工作目錄,發出以下命令:
=>PS1="[u@h w]$" [root@ip-72-167-112-17 /var/www/yiibai/unix]$ [root@ip-72-167-112-17 /var/www/yiibai/unix]$
此命令的結果是,提示顯示使用者的使用者名,機器名(hostname),工作目錄。
有相當多的PS1的值引數可以用來作為跳脫序列,試圖限制了,提示沒有太多的資訊。
Escape Sequence | 描述 |
---|---|
Current time, expressed as HH:MM:SS. | |
d | Current date, expressed as Weekday Month Date |
Newline. | |
s | Current shell environment. |
W | Working directory. |
w | Full path of the working directory. |
u | Current user.s username. |
h | Hostname of the current machine. |
# | Command number of the current command. Increases with each new command entered. |
$ | If the effective UID is 0 (that is, if you are logged in as root), end the prompt with the # character; otherwise, use the $. |
可以使自己的變化,每次登入時,或者可以將它新增到您的組態檔案中所做的更改會自動在PS1。
當你發出一個命令,是不完整的,shell將顯示輔助提示,等待完成該命令,然後再次按Enter鍵。
預設的次級提示>(大於號),但可以改變重新定義PS2 shell變數:
下面的例子使用預設的次級提示:
$ echo "this is a > test" this is a test $
下面的例子重新定義PS2客製化提示:
$ PS2="secondary prompt->" $ echo "this is a secondary prompt->test" this is a test $
以下是部分重要的環境變數列表。如上所述,這些變數將被設定和存取:
變數 | 描述 |
---|---|
DISPLAY | Contains the identifier for the display that X11 programs should use by default. |
HOME | Indicates the home directory of the current user: the default argument for the cd built-in command. |
IFS | Indicates the Internal Field Separator that is used by the parser for word splitting after expansion. |
LANG | LANG expands to the default system locale; LC_ALL can be used to override this. For example, if its value is pt_BR, then the language is set to (Brazilian) Portuguese and the locale to Brazil. |
LD_LIBRARY_PATH | On many Unix systems with a dynamic linker, contains a colon-separated list of directories that the dynamic linker should search for shared objects when building a process image after exec, before searching in any other directories. |
PATH | Indicates search path for commands. It is a colon-separated list of directories in which the shell looks for commands. |
PWD | Indicates the current working directory as set by the cd command. |
RANDOM | Generates a random integer between 0 and 32,767 each time it is referenced. |
SHLVL | Increments by one each time an instance of bash is started. This variable is useful for determining whether the built-in exit command ends the current session. |
TERM | Refers to the display type |
TZ | Refers to Time zone. It can take values like GMT, AST, etc. |
UID | Expands to the numeric user ID of the current user, initialized at shell startup. |
以下是幾個環境變數的樣本範例:
$ echo $HOME /root ]$ echo $DISPLAY $ echo $TERM xterm $ echo $PATH /usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin $