1. 程式人生 > >Linux Shell基礎 環境變量配置文件

Linux Shell基礎 環境變量配置文件

case ren 查詢 .net order row 內核 none etc

source命令:使環境變量配置文件強制生效

source 命令會強制執行腳本中的全部命令,而忽略腳本文件的權限。該命令主要用於讓重新配置的環境變量配置文件強制生效。source 命令格式如下:

[root@localhost ~]# source 配置文件
或
[root@localhost ~]#.配置文件

"."就是 source 命令

環境變量配置文件

在環境變量配置文件中保存了對系統的操作環境生效的系統默認環境變量,比如 PATH、HISTSIZE、PS1、HOSTNAME 等

登錄時生效的環境變量配置文件

在 Linux 系統登錄時主要生效的環境變量配置文件有以下 5 個:
  • /etc/profile。
  • /etc/profile.d/*.sh。
  • ~/.bash_profile。
  • -/.bashrc。
  • /etc/bashrc。
這 5 個環境變量配置文件(/etc/profile.d/*.sh 是一系列的配置文件)在用戶登錄過程中會依次生效。不過需要註意,/etc/profile、/etc/profile_d/*.sh 和 /etc/bashrc 這三個環境變量配置文件會對所有的登錄用戶生效;而 ~/.bash_profile 和 ~/.bashrc 這兩個環境變量配置文件只會對當前用戶生效(因為每個用戶的家目錄中都有這兩個文件)。這些環境變量配置文件是依靠如圖 1 所示的順序被調用的。 技術分享圖片
1. 用戶登錄過程中先調用 /etc/profile 文件。在這個環境變量配置文件中會定義如下默認環境變量。
  • -USER 變量:根據登錄的用戶給這個變量賦值(就是讓 USER 變量的值是當前用戶)。
  • -LOGNAME 變量:根據 USER 變量的值給這個變量賦值。
  • -MAIL 變量:根據登錄的用戶來定義用戶的郵箱為 /var/spool/mail/ 用戶名。
  • -PATH 變量:根據登錄用戶的 UID 是否為 0,判斷 PATH 變量是否包含 /sbin、/usr/sbin 和 /usr/local/sbin 這三個系統命令目錄。
  • -HOSTNAME 變量:根據主機名給這個變量賦值。
  • -HISTSIZE 變量:定義歷史命令的保存條數。
  • -umask:定義 umask 默認權限。註意:/etc/profile 文件中的 umask 權限是在"有用戶登錄過程(輸入了用戶名和密碼)"時才會生效的。
  • -調用 /etc/profile.d/*.sh文件,也就是調用 /etc/porfile.d/ 目錄下所有以 .sh 結尾的文件。
2. 由 /etc/profile 文件調用 /etc/profile.d/*.sh 文件。該目錄中所有以 .sh 結尾的文件都會被 /etc/profile 文件調用,這裏最常用的就是 lang.sh 文件,而這個文件又會調用 /etc/sysconfig/i18n 文件。/etc/sysconfig/i18n 就是前面講過的默認語系配置文件。
3. 由 /etc/profile 文件調用 ~/.bash_profile文件。~/.bash_profile文件主要實現了兩個功能:   1. 調用了 ~/.bashrc 文件。   2. 在 PATH 變量後面加入了":$HOME/bin"這個目錄。也就是說,如果我們在自己的家目錄中建立了 bin 目錄,然後把自己的腳本放入"~/bin"目錄中,就可以直接執行腳本,而不用通過目錄執行了。
4. 由 ~/.bash_profile 文件調用 -/.bashrc 文件。在 -/.bashrc 文件中主要實現了兩個功能:   1. 定義默認別名。筆者把自己定義的別名也放入了這個文件。   2. 調用/etc/bashrc。

5. 由 ~/.bashrc 文件調用 /etc/bashrc 文件。在 /etc/bashrc 文件中主要定義了如下內容。
  • PS1 變量:也就是用戶的提示符。如果我們想要永久修示符,就要在這個文件中修改。
  • umask:定義 umask 默認權限。這個文件中定義的 umask 是針對"沒有用戶登錄過程(不需要輸入用戶名和密碼,比如從一個終端切換到另一個終端,或進入子Shell)"時生效的。如果是"有用戶登錄過程",則 /etc/profile 文件中的 umask 生效。
  • PATH 變量:會給 PATH 變量追加值,當然也是在"沒有用戶登陸過程"時才調用的。
  • 調用 /etc/profile.d/*.sh 文件,這也是在"沒有用戶登錄過程"時才調用的。在"有用戶登錄過程"時,/etc/profile_d/*.sh 文件已經被 /etc/profile 文件調用過了。
這 5 個環境變量配置文件會被依次調用。如果是我們自己定義的環境變量,則應該放入哪個文件呢?如果你的修改是打算對所有用戶生效的,那麽可以放入 /etc/profile 環境變量配置文件;如果你的修改只是給自己使用的,那麽可以放入 ~/.bash_profile 或 -/.bashrc 環境變量配置文件。

但是如果我們誤刪除了這些環境變量,比如刪除了 /etc/bashrc 或 ~/.bashrc 文件,那麽這些文件中的配置就會失效(~/.bashrc 文件會調用 /etc/bashrc 文件),我們的提示符就會變成下面這樣:

-bash-4.1#

因為在 /etc/bashrc 文件中會設定 PS1 命令提示符,如果這個文件不存在或沒有被調用,那麽提示符就會是 Bash 最基本的樣子。

註銷時生效的環境變量配置文件

在用戶退出登錄時,只會調用一個環境變量配置文件,就是 ~/.bash_logout。這個文件默認沒有寫入任何內容,但是如果我們希望在退出登錄時執行一些操作,比如清除歷史命令、備份某些數據,就可以把命令寫入這個文件。

其他的環境變量配置文件

~/bash_history 文件是歷史命令保存文件。

登陸信息及修改

在登錄本地終端時的歡迎信息保存在 /etc/issue 文件中,我們查看一下這個文件:

[root@localhost /]# cat /etc/issue
\S
Kernel \r on an \m

系統在每次登錄時,會依賴這個文件的配置顯示歡迎界面。在 /etc/issue 文件中允許使用轉義符調用相應信息,其支持的轉義符可以通過 man agetty 命令查詢,如表 1 所示。

轉義符 作 用
\d 顯示當前系統日期
\s 顯示操作系統名稱
\1 顯示登錄的終端號,這個轉義符比較常用
\m 顯示硬件體系結構,如i386、i686等
\n 顯示主機名
\o 顯示域名
\r 顯示內核版本
\t 顯示當前系統時間
\u 顯示當前登錄用戶的序列號

/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 ...省略部分輸出...
# no default banner path
#Banner none
Banner /etc/issue.net
…省略部分輸出…

這樣,在 ssh 遠程登錄時,也可以顯示歡迎信息,只是不能再識別"\d"和"\l"等信息了。

/etc/motd

/etc/motd 文件中也有歡迎信息的,這個文件和 /etc/issue 及 /etc/issue.net 文件的區別是:/etc/issue 及 /etc/issue.net 文件是在用戶登錄之前顯示歡迎信息的;而 /etc/motd 文件是在用戶輸入用戶名和密碼,正確登錄之後顯示歡迎信息的。/etc/motd 文件中的歡迎信息,不論是本地登錄,還是遠程登錄,都可以顯示。

自定義快捷鍵

查看已有快捷鍵 ,命令如下所示:

[root@localhost /]# stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread -clocal -crtscts
-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

修改已有快捷鍵,命令如下:

[root@localhost ~] # stty 關鍵字 快捷鍵
例如:
[root01ocalhost ~]# stty intr ^p
#定義Ctrl +P快提鍵為強制中止,"^"字符只需手工輸入即可
[root@localhost ~】# stty -a
speed 38400 baud; rows 21; columns 104; 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;

強制中止的快提鍵變成了Ctrl+P

Linux Shell基礎 環境變量配置文件