這里介紹一些bash啟動(dòng)前、后的問(wèn)題,以及一些使用bash需要注意的基本問(wèn)題。
1、Bash的介紹
===========
Bash是一種Shell程序,它是一般的Linux系統(tǒng)中的默認(rèn)的Shell程序,一般情況下Bash指的是/bin/bash這個(gè)軟件。
一個(gè)Linux系統(tǒng)中有多少個(gè)可用的Shell程序,可以從/etc/shells文件中查出來(lái)。
當(dāng)前登錄用戶的默認(rèn)Shell是哪一個(gè),可以從/etc/passwd文件中與此用戶對(duì)應(yīng)的那一行最后一個(gè)字段看出來(lái)?;蛘咭部梢酝ㄟ^(guò)echo $SHELL來(lái)查看。
2、內(nèi)部命令與外部命令
====================
Bash中可用的命令分為兩類(lèi),分別是:內(nèi)部命令和外部命令。內(nèi)部命令是Bash的一部分,而外部命令都是一個(gè)一個(gè)獨(dú)立于Bash的軟件。
在bash的用戶提示符下,可以輸入內(nèi)部命令和外部命令,然后bash會(huì)分析命令,之后執(zhí)行命令。bash執(zhí)行內(nèi)部命令不會(huì)產(chǎn)生新的進(jìn)程,而在執(zhí)行外部命令的時(shí)候,bash會(huì)用fork函數(shù)生成一個(gè)新的進(jìn)程,然后用exec函數(shù)來(lái)加載這個(gè)外部命令的程序來(lái)執(zhí)行這個(gè)外部命令。
怎么來(lái)區(qū)分一個(gè)命令是內(nèi)部命令還是外部命令呢?用type命令來(lái)區(qū)分。type本身是一個(gè)內(nèi)部命令,type commandName可以知道commandName這條命令的是內(nèi)部命令還是外部命令。
3、環(huán)境變量與用戶自定義變量
=====================
環(huán)境變量是對(duì)所有的進(jìn)程(包括bash的進(jìn)程和非bash的進(jìn)程)都可見(jiàn)的變量,一般用大寫(xiě)字母的組合作為變量名,所以也稱(chēng)為全局變量。
名詞解析:臨時(shí)環(huán)境變量和永久環(huán)境變量。其實(shí)全局變量都是通過(guò)export導(dǎo)出的變量。
臨時(shí)全局變量是在bash的命令提示符下或者bash scripts下用export導(dǎo)出的變量,這些變量在機(jī)器重啟之后會(huì)消失,除非再次執(zhí)行export命令或者再次執(zhí)行相應(yīng)的scripts。
永久環(huán)境變量是寫(xiě)在配置文件中的,這些配置文件在每次重啟機(jī)器甚至重開(kāi)一個(gè)bash的時(shí)候都會(huì)被再執(zhí)行一次,所以這些文件中的全局變量一直存在,不會(huì)因?yàn)橹貑C(jī)器而消失,看上去好像是永久的,其實(shí)是每次都重新export了。