bash環境:
shell:外殼 做爲操做系統自己的shell,是用戶跟機器交互的接口,把用戶指望執行的命令提交給內核,讓內核把
它啓動起來,並做爲一個進程進行調度
bash是一個解釋器shell
編譯器:
解釋器:在命令行輸入一條命令後,解釋器要對此命令或語句作出解釋
解釋:可以理解用戶輸入指令的意義
詞法分析:按照空格做爲分隔符,切割成n個片斷以後,做爲命令解釋器它必須得知道哪一個是命令,哪一個是選項、哪一個是參數。。。?
語法分析
語義分析編程
條件判斷:選擇分支
循環bash
過程式編程語言:執行方式通常爲
順序執行
選擇執行
循環執行編程語言
解釋器:提供了編程環境函數
腳本:使用bash提供控制機制,將指望執行的命令羅列於文本文件中;
bash沒有庫,整個程序幾乎都要依賴於系統命令來完成;操作系統
編譯型:
源程序(文本文件)--> 預處理 --> 編譯 --> 彙編 --> 連接 命令行
靜態語言接口
解釋型:
源程序(文本文件)--> 解析器去讀取並執行進程
動態語言內存
bash的重要特性:變量(內存空間)
bash變量類別:
本地變量:只對當前shell進程有效的變量;對其它shell進程無效,包括當前shell進程的子進程;
init進程:初始化系統進程,全部的進程都是其fork而來
VAR_NAME=VALUE
變量賦值:向變量的存儲空間保存數據
變量引用:${VAR_NAME}
"":弱引用,裏面的變量會被替換;
'':強引用,裏面的全部字符都是字面量,直接輸出,不會作任何替換的;
環境變量:對當前shell進程及其子shell有效,對其它的shell進程無效;
定義:export VAR_NAME=VALUE
導出變量:export VAR_NAME
用戶可自義環境變量
bash有許多內置的環境變量
撤消變量:unset VAR_NAME
NAME
unset - unset values and attributes of variables and functions
SYNOPSIS
unset [-fv] name ...
DESCRIPTION
Each variable or function specified by name shall be unset.
只讀變量:readonly VAR_NAME
NAME
readonly - set the readonly attribute for variables
SYNOPSIS
readonly name[=word]...
readonly -p
DESCRIPTION
The variables whose names are specified shall be given the readonly attribute. The values of variables with the readonly
attribute cannot be changed by subsequent assignment, nor can those variables be unset by the unset utility. If the name of a
variable is followed by = word, then the value of that variable shall be set to word.
局部變量:
對shell腳本中某代碼片段有效;一般用於函數本地;函數調用結束,值消失
local VAR_NAME=VALUE
位置變量:
$1, $2, ..., ${10}
特殊變量:
$?
查看當前shell進程中的全部變量:set
查看當前shell進程中的全部環境變量: printenv, env export
變量命名:
一、不能使用程序中的關鍵字(保留字);
if, case, for
二、只能使用數字、字母和下劃線,且不能以數字開頭;
三、要見名知義
userName
變量類型:
name=Jerry
一、存儲機制 文本和二進制格式
二、存儲空間
三、參與的運算方式
變量類型:
數值型:
精確數值:整數
近似數值:浮點型
單精度浮點
雙精度浮點
字符型:
char
string
布爾型:
true, false
類型轉換:
顯式轉換
隱式轉換
bash是弱類型的語言:一切皆字符
18:0001 0010 二進制數
18: 1, 8
ASCII: 128經常使用字符
000 0001 a
000 0010 a
bash的配置文件:
profile類:爲交互式登陸的用戶提供配置
全局:
/etc/profile
/etc/profile.d/*.sh
用戶:
~/.bash_profile
功用:
一、設定環境變量
二、運行命令或腳本
bashrc類:爲非交互式的用戶提供配置
全局:
/etc/bashrc
用戶:
~/.bashrc
功用:
一、設定本地變量
二、定義命令別名
登陸類型:
交互式:
直接經過終端輸入帳號和密碼登陸;
使用su -l USERNAME 或 su - USERNAME;
非交互式:
su USERNAME
圖形界面下打開的終端
執行腳本
經過編輯配置文件修改的配置生效?
一、退出並從新登陸;
二、讓bash重讀此配置文件;
. FILE
source FILE
交互登陸的用戶:
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非交互登陸的用戶: ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh