『忘了再學』Shell基礎 — 23、其他環境變陣列態檔

2022-05-31 15:01:49

1、登出時生效的環境變陣列態檔

在使用者退出登入時,只會呼叫一個環境變陣列態檔,就是~/.bash_logout檔案。

這個檔案預設沒有寫入任何內容,可是如果我們希望再退出登入時執行一些操作,比如清除歷史命令,或者備份某些資料,就可以把命令寫入這個檔案。

2、其他組態檔

還有一些環節變陣列態檔,最常見的就是~/.bash_history檔案,也就是歷史命令儲存檔案。

3、Shell登入資訊相關檔案

(1)/etc/issue檔案說明

我們在登入tty1-tty6這六個本地終端時,會有幾行的歡迎介面。

這些歡迎資訊是儲存在哪裡的?可以修改嗎?

當然可以修改,這些歡迎資訊是儲存在/etc/issue檔案中,

該檔案就是一個普通檔案顯示,設定的內容,重啟生效。

我們檢視下這個檔案:

[root@localhost ~]# cat /etc/issue
# 當前CentOS系統的版本
CentOS release 6.8 (Final)
# 當前系統的主要相關資訊
Kernel \r on an \m

可以支援的跳脫符我們可以通過man agetty命令查詢,在表中我們列出常見的跳脫符作用:

跳脫符 作用
\d 顯示當前系統日期。
\s 顯示作業系統名稱。
\l 顯示登入的終端號,這個比較常用。
\m 顯示硬體體系結構,如1386,1686等。
\n 顯示主機名。
\o 顯示域名。
\r 顯示核心版本。
\t 顯示當前系統時間。
\u 顯示當前登入使用者的序列號。

注意:該歡迎資訊,值對原生的tty1-tty6終端生效,遠端終端,如ssh登陸的終端是看不到上面資訊的。

(2)/etc/issue.net檔案說明

/etc/issue檔案是在本地終端登入時顯示歡迎資訊的檔案,如果是遠端登入(如ssh遠端登入,或telnet遠端登入)需要顯示歡迎資訊,則需要設定/etc/issue.net檔案。

使用這個檔案時需要注意:

  • 首先,在/etc/issue檔案中支援的跳脫符,在/etc/issue.net檔案中是不能使用的。
  • 其次,ssh遠端登入是否顯示/etc/issue.net檔案中的歡迎資訊,是由ssh的組態檔決定的。
  • 如果我們需要ssh遠端登入可以檢視/etc/issue.net的歡迎資訊,那麼首先需要修改ssh的組態檔/etc/ssh/sshd_config,加入如下內容:
    [root@localhost ~]# cat /etc/ssh/sshd_config
    
    # …省略部分輸出…
    
    # 把Banner none的註釋開啟
    # 然後新增/etc/issue.net檔案在Banner後
    # 使issue.net檔案生效
    
    # no default banner path
    # Banner none
    Banner /etc/issue.net
    
    # …省略部分輸出…
    
    這樣在ssh遠端登入時,也可以顯示歡迎資訊,只是不再可以識別\d\l等資訊了。
  • 設定完成/etc/issue.net檔案,重啟遠端終端即可。

(3)/etc/motd檔案說明

/etc/motd檔案中也是顯示歡迎資訊的,

這個檔案和/etc/issue/etc/issue.net檔案的區別是:
/etc/issue/etc/issue.net是在使用者登入之前顯示歡迎資訊,
/etc/motd是在使用者輸入使用者名稱和密碼,正確登入之後顯示歡迎資訊。

/etc/motd檔案中的歡迎資訊,不論是本地登入,還是遠端登入都可以顯示。

提示:

更多的建議在/etc/motd檔案中寫一些警告資訊,而不是歡迎資訊。

/etc/motd檔案是一個空檔案,直接編輯你需要顯示的內容即可。

設定完成/etc/motd檔案,重啟遠端終端即可。

4、定義Bash快捷鍵

查詢系統中所有生效的快捷鍵

[root@localhost ~]# stty -a

修改Bash快捷鍵:

# 格式
[root@localhost ~]# stty 關鍵字 快捷鍵


# 檢視查詢系統中所有生效的快捷鍵
[root@localhost ~]# stty -a
speed 38400 baud; rows 24; columns 87; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc
-ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl
echoke

# 修改intr快捷鍵
# 定義ctrl+p快捷鍵為強制終止,^字元只要手工輸入即可。
[root@localhost ~]# stty intr ^p

# 檢視查詢系統中所有生效的快捷鍵
[root@localhost ~]# stty -a
speed 38400 baud; rows 24; columns 87; line = 0;
intr = ^P; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc
-ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl
echoke

提示:系統預設的快捷鍵,並不建議更改,這裡只是告訴你可以修改。