bash基礎和環境變量相關配置

Bashgit

一、bash的基礎特性
shell

   (1) 命令歷史apache

     bash會記錄此前用戶在shell會話中執行的命令於緩衝區中;正常退出時,會被記錄於當前用戶家目錄下隱藏文件.bash_history中;緩存

     環境變量:bash

       HISTSIZE:命令歷史記錄的條數;ide

       HISTFILE:命令歷史文件路徑;函數

       HISTFILESIZE:spa

     history命令:
命令行

       -c:清空命令歷史;orm

       -d #: 刪除歷史中指定的命令;

       -a: 當緩衝區中的歷史手動追加文件;

       history #: 顯示最近的多少條命令;


     調用過去執行過的命令:

       !#:調用歷史中的第#條命令;

       !!: 重複執行上一條命令

       !string:調用歷史中最近一個以string開頭的命令;


     調用過去執行過的命令的最後一個參數:

       !$:

       ESC, .

       Alt+.


   (2) 命令補全

     bash內建命令

       外部命令

       命令搜索機制:

       PATH環境變量:由冒號分隔的路徑


     hash:把此前搜索到路徑緩存到內存中;

       kv: key-value

       ls --> /bin/ls



   (3) 路徑補全

     把用戶給出的路徑字符串當前路徑起始,並在其指定的上級目錄下搜索以指定的字符串開頭的文件名;

     若是唯一:直接補全;

     不然:兩次Tab,可列出;


   (4) 命令行展開的功能

     ~: 展開爲當前用戶的主目錄;

     ~USERNAME:展開爲指定用戶的家目錄;

     {}:可承載一個以逗號分隔的列表,並其展開爲多個路徑;

     /var/{log,cache,run} = /var/log /var/cache /var/run


   (5) 命令的執行結果狀態,由bash追蹤和保存

     成功:0

     失敗:1-255


       bash使用特殊變量$?保存最近一條命令的狀態結果;

       程序的執行結果有兩種:

       程序的返回值;

       程序的狀態結果;


   (6) 命令別名

     命令的另外一個引用符號,由bash程序維護;

     alias/unalias

       alias: 查看全部已經定義別名;

       alias NAME=COMMAND:定義別名;

     若是別名同原命令名,想直接執行原命令,則需使用\COMMAND

       unalias NAME: 撤消別名;


二、bash的基礎特性

   (1) glob

     文本名「通配」

       *:匹配任意長度的任意字符;

       ?:匹配任意單個字符;

       a*b: aab, ab, a123b; 

       a?b: 

       []: 匹配指定範圍內的任意單個字符;

       [0-9]

       [^]:匹配範圍外的任意單個字符;

       [^a-b]


     字符集合:

       [:lower:]

       [:upper:]

       [:alnum:]

       [:digit:]

       [:space:]

       [:punct:]

       [:alnum:]


     Ctrl+l:清屏

     Ctrl+a: 切換至命令行首

     Ctrl+e:切換至命令行尾

     Ctrl+c:取消命令執行

     Ctrl+u:刪除光標所在處至行首的內容;

     Ctrl+k: 刪除光標所在處至行尾的內容;


三、bash環境配置

(1)配置文件,生效範圍劃分,存在兩類:

   全局配置:

     /etc/profile, /etc/profile.d/*.sh

     /etc/bashrc

   我的配置:

     ~/.bash_profile

     ~/.bashrc


(2)按功能劃分,存在兩類:

   profile類:爲交互式登陸的shell提供配置

     /etc/profile, /etc/profile.d/*.sh

    ~/.bash_profile

    作用:

       定義環境變量,例如PATH、PS1

      運行命令或腳本


(3)bashrc類:爲非交互式登陸shell提供配置

   /etc/bashrc

   ~/.bashrc

     作用:

       (1) 定義命令別名;

       (2) 定義本地變量;


(4)變量:內存空間,變量名

   類型:

     環境變量:做用範圍當前shell進程及其子進程

     本地變量:做用範圍當前shell進程

     局部變量:做用範圍僅爲當前shell進程中某代碼片段(一般爲函數上下文)

     位置變量:$1, $2

     特殊變量:$?


(5)變量定義方式:

   bash內置變量:可直接調用,內置了許多環境變量,例如PATH等

     自定義變量:name=value

     變量賦值:變量名=值


(6)bash弱類型:

   變量存儲數據時,默認均採用字符形式;任何變量能夠不經聲明,直接引用;

     120:24bits

     120: 8bits 


(7)定義環境變量:

   export name=value

   declare -x name=value


查看:env, printenv, export,set


(8)撤消變量:

   unset name


(9)引用變量:

   ${name}, $name


例子:

[root@localhost /]# animal='dog'
[root@localhost /]# echo "There are some $animals."
There are some .
[root@localhost /]# echo "There are some ${animal}s."
There are some dogs.


(10)bash中的引用符號:

   '': 強引用,變量替換不會發生

   "":弱引用

   ``: 命令引用


例子:

[root@localhost /]# ls -l `which cat`
-rwsr-xr-x. 1 root root 48568 10月 15 2014 /bin/cat
[root@localhost /]# echo "$animal"
dog
[root@localhost /]# echo '$animal'
$animal


(11)經常使用的環境變量 

   PATH 決定了shell將到哪些目錄中尋找命令或程序 

   HOME 當前用戶主目錄 

   HISTSIZE 歷史記錄數 

   LOGNAME 當前用戶的登陸名 

   HOSTNAME 指主機的名稱 

   SHELL 當前用戶Shell類型 

   LANGUGE  語言相關的環境變量,多語言能夠修改此環境變量 

   MAIL 當前用戶的郵件存放目錄 

   PS1 基本提示符,對於root用戶是#,對於普通用戶是$


(12)Linux的變量種類 

   按變量的生存週期來劃分,Linux變量可分爲兩類: 

     1. 永久的:須要修改配置文件,變量永久生效。 

     2. 臨時的:使用export命令聲明便可,變量在關閉shell時失效。 


(13)shell登陸類型:

   交互式登陸:

   直接經過終端進行的登陸;

   經過su -l Username命令實現的用戶切換;


(14)非交互式登陸:

   圖形界面下打開的命令行窗口;

   執行腳本;

   su Username;


(15)配置文件做用次序:

   交互式登陸:

     etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc


(16)非交互式登陸:

     ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh


(17)編輯配置文件定義的新配置如何生效?

   從新登陸;

   讓當前shell進程去從新讀取指定的配置文件;

     source /PATH/TO/SOMEFILE

     . /PATH/TO/SOMEFILE

注意:反作用


問題:

一、定義對全部用都生效的別名?

答:echo "alias cdnet='cd /etc/sysconfig'" >> /etc/bashrc


二、若是僅須要PATH環境變量的修改僅對root用戶生效,該如何操做?

答:sed -i '10s/$/:\/usr\/local\/apache2\/bin/' ./.bash_profile

相關文章
相關標籤/搜索