正在学习Linux,记录一下学习历程。参考《Unix&Linux大学教程》(幽默感+事无巨细),进行了精简摘要和总结。
内部命令
当输入内部命令时,shell在自己的进程内运行该命令。
查看是否是内部命令:
type 命令名
如:type date
外部命令
外部命令是独自运行的独立程序。
当输入外部命令时,shell将搜索合适的程序,然后一个单独的进程运行该程序。
shell如何查找外部命令?
shell检查PATH环境变量(搜索路径)
查看搜索路径:echo $PATH
得到目录(目录之间用:隔开):
/bin
/usr/bin
/usr/sbin
/usr/local/sbin
/home/sixline/bin
每个用户的目录可能有所不同,但是大体一致。其中名称bin用来指示一个存放程序的目录。
/bin和/usr/bin 存放系统中所有用户使用的程序。
/usr/sbin 存放系统管理员专用命令。
/usr/local/sbin 由系统管理员设置,用来存放为了本地使用而安装的目录。
/home/sixline/bin 指用户在自己的home目录下的bin目录可以存放自己的程序。
当shell需要查找外部命令时,它就在搜索路径中按顺序逐个检查每个目录,查找到期望的外部命令时,就停止搜索并执行命令。
修改搜索路径
以下以bash为例,C-Shll家族会有所不同。
使用export命令使PATH变量成为环境变量,shell及所有随后生成的进程都可以使用它。
export PATH="/bin:/usr/bin:/usr/local/bin"
但是这个命令语句并不通常会使用,因为系统以及设置好定义PATH变量的命令。
更多情况下是希望修改默认的搜索路径,以适合自己使用。
如:编写了自己的shell脚本和程序,并将其存放在当前工作目录(.)中,那么希望把这个目录的名称添加到搜索路径
export PATH=“$PATH:."
也可以用这种方式修改搜索路径顺序
如:你编写了一个date程序,并将它保存在$HOME/bin中,将自己的目录放在搜索路径的开头,shell将运行你编写的date程序,而不是标准date程序。
export PATH=”$HOME/bin:$PATH"
ps:这样做需要谨慎,有时会导致安全灾难,例如……
这样当自己