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
不会产生新的子进程。