Linux中關於別名、內部命令、hash緩存、以及外部命令(硬盤裏路徑)的優先級比較。
阿新 • • 發佈:2018-07-14
計算機 for 定義 hist -h linu 指定 history 我們 我們都知道:計算機中文件的讀取 內存>緩存>硬盤
linux中別名是為了簡化某些命令的輸入,在終端輸入alias可以查詢系統存在的別名,用戶也可以自定義別名,具體為:alias 別名=‘命令 ‘ linux中使用enable -n command 禁用所指定的內部命令
linux中使用enable -n 顯示所禁用內部命令
linux中別名是為了簡化某些命令的輸入,在終端輸入alias可以查詢系統存在的別名,用戶也可以自定義別名,具體為:alias 別名=‘命令 ‘
[root@CentOs6 ~]# alias hist=‘history‘
[root@CentOs6 ~]# hist
1 alias hist=‘history‘
2 type hsit
3 type hsitory
4 enable
5 hist
[root@CentOs6 ~]#
linux中使用enable 獲取linux所有的內部命令
linux中使用enable -n 顯示所禁用內部命令
[root@CentOs6 ~]# enable -n pwd
[root@CentOs6 ~]# enable -n
enable -n pwd
[root@CentOs6 ~]#
下面是關於別名和內部命令的優先級比較
[root@CentOs6 ~]# type touch touch是外部命令 touch is /bin/touch [root@CentOs6 ~]# type cd cd是內部命令 cd is a shell builtin [root@CentOs6 ~]# alias cd=‘touch‘ [root@CentOs6 ~]# cd touch: missing file operand Try `touch --help‘ for more information. [root@CentOs6 ~]#
可以看出別名優先於內部命令
下面是外部命令與hash緩存比較優先級:
系統初始Hash表是空的,如果系統重啟也會清空,當外部命令執行是會到PATH裏找該命令,然後記錄在Hash裏,當再執行時就到Hash裏取,這樣會加快執行速度。而且Hash裏不存放內部命令
[root@CentOs6 ~]# hash -r [root@CentOs6 ~]# date Sat Jul 14 00:23:49 CST 2018 [root@CentOs6 ~]# hash hits command 1 /bin/date [root@CentOs6 ~]# mv /bin/date /sbin [root@CentOs6 ~]# date -bash: /bin/date: No such file or directory [root@CentOs6 ~]#
先清除hash中所有緩存,執行date,依然是從緩存中讀取到date所在位置,但date已經被移動到其他位置,無法執行,說明hash高於外部路徑
下面是內部命令與hash緩存比較優先級:
內部命令直接在內存啟動時就存在,直接放在內存裏面。hash緩存必須執行過命令才能存在hash裏,而且hash緩存裏面不放內部命令,說明輸入內部命令時,不會去hash裏去找,直接就運行了。所以內部命令>hash緩存。
綜上所述:alias > 內部命令 > hash緩存 > path(外部路徑)
Linux中關於別名、內部命令、hash緩存、以及外部命令(硬盤裏路徑)的優先級比較。