shell(一)
阿新 • • 發佈:2017-12-04
運行 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 HELLOView 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 1512188044View 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 1512193811View 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 doneView Code
2.9 老shell漏洞檢測
以下代碼在系統中運行,如果出現兩行及以上,則存在shell漏洞,需要升級shell
1 env x=‘() { :;}; echo be careful‘ bash -c "echo this is a test"View Code
shell(一)