研究學習 linux shell 的系列文章.
這篇文章主要以 centos 為例講環境變數的配置檔案.變數型別:
環境變數在命令列中修改只能臨時生效,把它寫入配置檔案才能永久生效. path、histsize、ps1、hostname 等環境變數寫入對應的環境配置檔案,在登陸 shell 時自動載入生效.
環境變數配置檔案中主要是定義對系統操作環境生效的系統預設環境變數,如 path 等. 不同發行版,配置檔案和載入過程有所區別.source
命令或$ source 配置檔案
修改配置檔案後,必須登出重新登陸才能生效.$ . 配置檔案
使用
source
命令可以不用重新登陸,立即啟用配置檔案
centos 中登陸時載入的配置檔案
2.1 環境變數配置檔案的載入過程
centos 中環境變數配置檔案的載入過程可以用下圖概括,它有兩種方式:
1.普通的正常登陸過程
輸入使用者名稱和密碼後,系統從/etc/profile
檔案開始,先按照路線 1
◯\text
1◯,後按照2
◯\text
2◯,最終進入命令提示符介面:
2.非登陸過程:例如 su 命令
su 命令切換使用者後,系統從/etc/bashrc
檔案開始,先按照路線 1
◯\text
1◯,後按照2
◯\text
2◯,最終進入命令提示符介面:
2.2 環境變數配置檔案的具體作用
1./etc/profile
的作用:
定義環境變數:
umask:
呼叫/etc/profile.d/*.sh
檔案
53 行將之前定義的變數宣告為環境變數:
export path user logname mail hostname histsize histcontrol # line 53
59行 ~ 63行設定系統預設許可權:
# by default, we want umask to get set. this sets it for login shell
# current threshold for system reserved uid/gids is 200
# you could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid fileif[
$uid -gt 199 ]&&[
"`/usr/bin/id -gn`"=
"`/usr/bin/id -un`"]
;then
umask 002
else
umask 022
fi
umask # 檢視系統預設許可權65行 ~ 73行 呼叫注意:檔案最高許可權為 666
目錄最高許可權為 777
許可權不能使用數字進行換算,而必須使用字母
umask 定義的許可權,時系統預設許可權中準備丟棄的許可權
rw-rw-rw- # 666
----w--w- # 022
= rw-r--r-- # 644
rw-rw-rw- # 666
----wx-wx # 033
= rw-r--r-- # 644
rwxrwxrwx # 777
----w--w- # 022
= rwxr-xr-x # 755
/etc/profile.d/*.sh
檔案
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ;
doif
[ -r "$i"];
thenif[
"$"!=
"$-"];
then
."$i"
else
."$i"
>/dev/null
fifidone
unset i
unset -f pathmunge
[user@centos ~]# ls /etc/profile.d/
256term.csh abrt-console-notification.sh colorgrep.csh colorls.csh csh.local lang.sh less.sh vim.csh which2.csh
256term.sh bash_completion.sh colorgrep.sh colorls.sh lang.csh less.csh sh.local vim.sh which2.sh
[user@centos ~]# cat /etc/locale.conf
lang="en_us.utf-8"
2.~/.bash_profile
的作用
3.~/.bashrc
的作用
4./etc/bashrc
的作用
在上述配置檔案新增自定義環境變數設定均可生效,一般在~/.bashrc
檔案中修改設定.
2.1 其它的環境變數配置檔案
1.~/.bash_logout
的作用
在登出當前 shell 時呼叫,預設為空,可自行新增命令,例如清除歷史命令:history -c
.
2..bash_history
儲存歷史命令,與history
命令有一定差異
3.轉義符
作用\d
顯示當前系統日期
\s顯示作業系統名稱
\l顯示登陸的終端號,這個比較常用
\m顯示硬體體系結構,如i386、i686等
\n顯示主機名
\o顯示網域名稱
\r顯示核心版本
\t顯示當前系統時間
\u顯示當前登陸使用者的序列號
4.5.建議將歡迎資訊寫在/etc/motd
中,建議寫成警告資訊.
Linux Shell環境變數
shell的環境變數bash是bourne shell的gnu擴充套件,除了繼承了sh的所有特點以外,還增加了很多特性和功能。由login啟動的bash是作為乙個登入shell啟動的,它繼承了getty設定的term path等環境變數,其中path 對於普通使用者為 bin usr bin usr...
Linux SHELL,環境變數
shell 在電腦科學中,shell俗稱殼 用來區別於核 是指 提供使用者使用介面 的軟體 命令解析器 它類似於dos下的command和後來的cmd.exe。它接收使用者命令,然後呼叫相應的應用程式。同時它又是一種程式語言。作為命令語言,它互動式解釋和執行使用者輸入的命令或者自動地解釋和執行預先設...
linux shell獲取環境變數運算
很多shell運算需要獲取環境變數,例如a b,其中a或者b可能都來自於環境變數。但是環境變數可能出現不存在的情況,這時運算就會出錯。所以在計算前需要判斷其是否存在 z test 更複雜的 input 1 test mode 2 if z test mode then ret 1 elif test...