1. 程式人生 > >shell(一)

shell(一)

運行 closed a13 縮進 bash 統一 規範 提示 spl

1.寫腳本之前的思路

考慮

腳本統一管理

權限:用戶執行權限

清空錯誤文件

錯誤提示

腳本通用性

2.2 統一腳本目錄

1 mkdir /server/scripts
2 cd /server/scripts

2.3 使用vim創建腳本
文件名規範,名字要有意義,結尾以.sh結尾
vim oldboyedu.sh
規範的shell腳本,指定解釋器

 1 1.    放在統一目錄
 2 2.    腳本以.sh結尾
 3 3.    開頭指定腳本解釋器
 4 4.    開頭加版權等信息,可以配置~/.vimrc文件自動添加
 5 5.    腳本不要用中文註釋,盡量用英文註釋
 6 6.    代碼書寫優秀習慣
7 a. 成對的內容一次性寫出來,防止遺漏,[] 、 ‘‘ "" 8 b. [] 兩端有空格 先輸入[] 輸入退格 兩個空格 出退格 9 c. 流程控制語句一次寫完,再添加內容 10 d. 通過縮進讓代碼易讀 11 e. 腳本中的引號都是英文狀態下的引號,其他字符也是英文狀態,好的習慣可以讓我們避免很多不必要的麻煩,提高工作效率

2.4 執行腳本的方法

1. sh /server/scritps/test.sh
2. chmod +x /server/scripts/test.sh && /server/scripts/test.sh
3. source /server/scripts/test.sh
4. . /server/scripts/test.sh . 與 source 等價

結論:sh命令在當前shell(進程A)執行腳本會創建一個新的shell(進程B),然後執行腳本內容,最後將腳本的最終結果傳給當前shell(進程A) 
source直接在當前shell(進程A)中執行腳本,所以腳本的變量在當前shell(進程A)中生效
使用場景
#引入文件時
source /etc/profile
source /etc/init.d/functions
其他 sh /server/scripts/test.sh

2.5 全局變量

1. 全局變量,到處可用。在當前shell及所有子shell窗口全部局生效。在新開的shell窗口後效,需要寫入到文件中。
2. 通過export 添加環境變量

技術分享圖片
1 #此處為臨時添加
2 #方法1
3 export HELLO="hello World"
4 #方法2
5 HELLO ="hello World"
6 export HELLO
View Code

3. 到處生效 寫入配置文件中 echo ‘export hello=hello World‘ >>/etc/profile
4. unset 刪除變量

2.8 環境變量配置文件
全局環境變量設置文件 /etc/profile /etc/bashrc
局部環境變量設置文件 ~/.bash_profile ~/.bashrc
開機後環境變量啟動順序
#將環境變量時間放到文件結尾

技術分享圖片
1 [root@python-memcache ~]# env | egrep "[Bb]ash|profile"|awk -F "=" NR>1{print $1,$2}|sort -nk2|column
2 -t
3 profile           1512188041
4 bashrc            1512188042
5 rootBashrc        1512188043
6 rootBash_profile  1512188044
View Code

技術分享圖片

#將環境變量時間放到文件開頭,

技術分享圖片
1 [root@python-memcache ~]# env | egrep "[Bb]ash|profile"|awk -F "=" NR>1{print $1,$2}|sort -nk2|column -t
2 profile           1512193808
3 rootBash_profile  1512193809
4 rootBashrc        1512193810
5 bashrc            1512193811
View Code

技術分享圖片

#利用文件屬性查看加載過程

技術分享圖片
1 for file in /etc/profile /etc/bashrc /root/.bashrc /root/.bash_profile ; do
2     stat ${file} | awk NR==5{print $2$3};NR==1{print  $0 }
3 done
View Code

2.9 老shell漏洞檢測
以下代碼在系統中運行,如果出現兩行及以上,則存在shell漏洞,需要升級shell

技術分享圖片
1 env x=() { :;}; echo be careful bash -c "echo this is a test"
View Code

shell(一)