『忘了再學』Shell基礎 — 14、環境變量(二)
- 2022 年 5 月 19 日
- 筆記
- 高級測試技能 - Shell基礎
提示:
在Linux系統中,環境變量分為兩種。一種是用戶自定義的環境變量,另一種是系統自帶的環境變量。
而在系統自帶的環境變量中,PATH環境變量、PS1環境變量、LANG語系變量需要進行說明一下。
本篇文章主要說明系統自帶的環境變量中的PS1環境變量。
1、PS1變量的作用
PS1變量:命令提示符設置。也就是[root@localhost ~]#
內容的設置。
PS1是一個很有意思的變量,是用來定義命令行提示符的,可以按照我們自己的需求來定義自己喜歡的提示符。
2、PS1變量的查看
- 直接查看PS1變量,如下:
[root@localhost ~]# echo $PS1 [\u@\h \W]\$
- 通過
set
命令查看,如下圖:
SP2變量是定義換行之後的命令提示符的顯示。
2、PS1可以支持的選項
我們先解釋一下系統命令提示符的組成[root@localhost ~]#
,我們之前說過root
位置代表當前登陸的用戶,localhost
位置代表當前主機名的簡寫主機名,~
位置表示當前所在目錄,第四列就是命令提示符。
而通過PS1變量我們得知上面的顯示組成是如下選項:[\u@\h \W]\$
。
所以下面我們羅列出PS1支持的選項:
\d
:顯示日期,格式為星期 月 日
。\H
:顯示完整的主機名。如默認主機名localhost.localdomain
。\h
:顯示簡寫主機名。如默認簡寫主機名localhost
。\t
:顯示24小時制時間,格式為HH:MM:SS
。\T
:顯示12小時制時間,格式為HH:MM:SS
。\A
:顯示24小時制時間,格式為HH:MM
。\@
:顯示12小時制時間,格式為HH:MM am/pm
。\u
:顯示當前用戶名。\v
:顯示Bash的版本信息。\w
:顯示當前所在目錄的完整名稱。\W(大寫)
:顯示當前所在目錄的最後一個目錄。\#
:執行的第幾個命令。\$
:提示符。如果是root
用戶會顯示提示符為#
,如果是普通用戶會顯示提示符為$
。
注意:
在PS1變量中,如果是可以解釋的符號,如
\u
、\h
等,則顯示這個符號的作用。如果是不能解釋的符號,如@
或「空格」,則原符號輸出。
總結:
# 默認的提示符顯示
# [用戶名@簡寫主機名 所在目錄最後一級] 提示符
[root@localhost ~ ] # echo $PS1
[\u@\h \W]\$
3、PS1環境變量的配置
其實我們在使用Linux系統的時候,還是比較習慣的默認的系統命令提示符的配置,也就是PS1變量的默認配置,一般我們是不做任何修改的,因為我們習慣了,修改了之後你會不舒服。如有需要,則看一下。
設置PS1環境變量,如下:
#修改提示符為
#[用戶名@當前時間 當前所在完整目錄] 提示符
[root@localhost ~ ] # PS1='[\u@\t \w]\$ (空格)'
# (空格)是因為習慣,看着舒服,不是必須。
#切換下當前所在目錄
#因為家目錄是看不出來區別的
[root@04:46:40 ~ ] # cd /usr/local/src/
[root@04:47:29 /usr/local/src] #
#提示符按照我們的設計發生了變化
這裡一定要注意,PS1變量的值要用單引號包含,因為需要把PS1變量的選項中的特殊符號轉變成普通的字符串(主要是$
符號),否則設置不生效。系統默認也是單引號設置的,你照着寫就可以了。
擴展:再舉個例子。
#可以同時給SP1設置更多的選項
[root@localhost ~ ] # PS1='[\u@\@ \h \# \W]\$ '
[root@04:53 上午 localhost 31 src] #
#\@:顯示12小時制時間,格式為HH:MM am/pm。
#\#:會顯示執行了多少個命令。
PS1變量可以自由定製,不過說實話,默認的提示符已經使用習慣了,如果換一個還是非常彆扭的,推薦默認的提示符就很好。
4、總結
我們上邊在命令行中直接定義PS1變量的值是臨時生效的,一旦重啟電腦就會消失,如果需要永久生效,需要寫入到對應的配置文件中的。
對應的配置文件為/etc/bashrc
,該文件也是一個環境變量的配置文件。
如下圖:
注意看圖中SP1變量的配置,是加雙引號的,需要在\$
之前再加上一個\
,才能正常顯示\$
。