Linux 中的內部命令和外部命令
作者:Grey
原文地址:
什麼是 bash shell ?
bash shell,就是一個程序,就是 Linux 系統安裝的一個軟件,用戶通過 SSH 輸入用戶名密碼登錄操作系統後,直接進入 bash shell 這個軟件
shell 命令分爲外部命令和內置命令:
比較 | 內置命令 | 外部命名 |
---|---|---|
定義 | Bash Shell 自帶的命令 | Linux 系統中的應用程序 |
執行效率 | 高 | 低 |
執行過程 | 調用當前 Shell 進程的一個函數 | 觸發磁盤 I/O,fork 出一個單獨的進程,執行完成後退出 |
內部命令( Shell 自帶的命令)
例如:cd
命令,使用
type cd
顯示:
cd is a shell builtin
說明cd
命令是 shell 自帶的命令
通過
help -d
可以查看所有內部命令
外部命令(不是Shell自帶的命令,由用戶安裝的)
比如 ifconfig
命令
type ifconfig
顯示:ifconfig is /usr/sbin/ifconfig
可以使用 file
命令查看命令是一個什麼類型的文件
file /usr/sbin/ifconfig
顯示:
/usr/sbin/ifconfig: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=22d5b3be8d3ce3c71cad5b982581ede262397b56, stripped
使用 whereis
查看某個命令在哪個位置
whereis ifconfig
顯示
ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
此外:
內部命令的幫助用 help
指令,外部命令的幫助用 man
指令。
更多
bash shell 在執行命令的時候,做了兩步優化:
第一個優化,通過 PATH
來(echo $PATH
) 搜索命令 。
第二個優化,通過 hash
來搜索命令,hash
查看,hash -r
(清空hash)
編寫腳本時候, 如需要執行權限,要賦予該文件執行權限 chmod u+rx filename
如果 bash
執行,則不需要賦予執行權限。
# 不需要執行權限
bash ./filename.sh
# 要賦予執行權限
./filename.sh
注:以上兩種執行方式都是新開一個進程,使用如下方式執行
source ./filename.sh
.filename.sh
不會產生新的子進程。