cd 命令是 *nix 系統(tǒng)中最基本的命令,它所做的事情是改變你當(dāng)前所在的目錄。本文詳細(xì)介紹該命令,它所能完成的功能以及關(guān)于該命令內(nèi)在的東西。
cd 命令:一個內(nèi)置命令
BASH Shell 是大多 Linux 發(fā)行版的默認(rèn) shell,BASH 有一些自己的內(nèi)置命令,cd 就是其中的一個。我將解釋什么是內(nèi)置命令,以及為什么 cd 是一個內(nèi)置命令。首先,用 SHELL 環(huán)境變量確認(rèn)你當(dāng)前的 shell:
現(xiàn)在用 which 命令檢查 cd 命令二進(jìn)制文件所在的路徑(如果存在的話):
結(jié)果什么都沒有輸出,這是因?yàn)橄到y(tǒng)中不存在 cd 命令的二進(jìn)制文件。但是你仍然可以運(yùn)行該命令,這是因?yàn)?cd 是 BASH 的內(nèi)置命令。內(nèi)置命令就是內(nèi)建在 shell 里的命令,另一個內(nèi)置命令 type 會給你顯示 cd 命令是一個內(nèi)置命令的信息:
如果你嘗試獲得任何內(nèi)置命令的幫助文檔,將不存在它們獨(dú)立的幫助頁:
對于這些內(nèi)置命令,不會創(chuàng)建獨(dú)立的進(jìn)程來運(yùn)行它們,因此他們運(yùn)行效率較高。
為了得到所有的內(nèi)置命令,你可以使用 help 命令(這里 help 本身也是一個內(nèi)置命令):
為什么 cd 是內(nèi)置命令
為了描述簡單,我就不討論更多的細(xì)節(jié)了,但是要理解這個問題的答案,還需要知道一點(diǎn) Unix 進(jìn)程相關(guān)的知識。
BASH 創(chuàng)建的任何進(jìn)程,它會由一個 BASH 的子 shell(當(dāng)前 BASH 進(jìn)程的子進(jìn)程)來執(zhí)行該進(jìn)程,新建的進(jìn)程運(yùn)行實(shí)例、輸出(如果需要的話),當(dāng)該進(jìn)程結(jié)束時,改子 shell 的任何屬性都不會返回給父 shell。注意到的是,cd 命令用來改變 shell 當(dāng)前所在的路徑,如果 cd 是一個外部命令,它將改變子 shell 的當(dāng)前路徑,當(dāng)運(yùn)行完返回時,他所做的改變對父 shell 沒有關(guān)系。因此,shell 的當(dāng)前路徑還是沒有改變!所有改變當(dāng)前 shell 環(huán)境的命令,在實(shí)現(xiàn)上都必須實(shí)現(xiàn)成內(nèi)置命令。如果實(shí)現(xiàn)成外部命令,我們將不會得到預(yù)期的結(jié)果。
下面我們探索 cd 命令的用法:
cd 命令用法
如果你直接輸入 cd 命令而不帶任何參數(shù),它將切換到你的 home 目錄下,不管你當(dāng)前所在的目錄是什么:
波浪線(~)符號也代表 home 目錄,你也可以使用它來切換到 home 目錄下:
全國職稱計算機(jī)考試速成過關(guān)系列套裝:W .. 定價:¥133 優(yōu)惠價:¥133.0 更多書籍 | |
全國職稱計算機(jī)考試速成過關(guān)系列套裝:W .. 定價:¥124 優(yōu)惠價:¥124.0 更多書籍 |