Linux 中的内部命令和外部命令
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
不会产生新的子进程。
本文来自博客园,作者:Grey Zeng,转载请注明原文链接:https://www.cnblogs.com/greyzeng/p/16912218.html

浙公网安备 33010602011771号