關於 bash 的 PATH 變量

    登陸 root 後修改環境變量 PATH,添加一個路徑 /root,正確指令以下bash

PATH="$PATH":/root

(這個命令是由 bash 解釋並執行,修改的變量也僅被 bash 記錄,從新登陸後可發現修改並未保存ui

不當心敲錯指令,雙引號寫成單引號,結果 PATH 被修改成spa

$PATH:/root

即單引號內的按照字符串處理,雙引號內的才按照變量名處理。結果 mv 指令都不能直接調用了,必須使用絕對路徑code

/bin/mv

echo 還能使用,說明 echo 是 bash 的 builtin。(用type -a echo能夠觀察到,echo既是bash的builtin,也存在/bin/echo這個可執行文件)(type 命令能夠查看某命令是 builtin, alias, 仍是單獨的程序)進程


    用戶命令的基本格式是字符串

command [-options] parameter

    bash 處理 command 和 parameter 是有區別的。
字符串處理

    command 有兩種可能。一是 bash 的 builtin,如 echo,由 bash 執行操做。二是某個可執行文件,當 command 中包含斜槓字符時,command 包含這個可執行文件的路徑+文件名,bash 根據 command 給出的路徑+文件名搜索可執行文件並執行,當 command 中不包含斜槓字符時,command 就只是這個可執行文件的文件名,此時 bash 會依次嘗試 PATH 中所包含的各個路徑,並執行第一個搜索到的同名可執行文件。io

    parameter 表示文件時,當 parameter 由斜槓開始,則說明 parameter 給出文件的絕對目錄和文件名,當 parameter 不禁斜槓開始,bash 會默認 parameter 是從當前目錄開始。登錄


    PATH 是 bash 這個進程所維護的一個變量,在用戶登陸時從該用戶的bash配置文件中讀出,能夠臨時修改,但不會被自動寫回保存。能夠經過修改用戶的bash配置文件實現永久修改。
變量


    cd是bash自帶指令,非可執行文件,用which找不到。

相關文章
相關標籤/搜索