您的位置:首页 > 运维架构 > Shell

bash命令执行

2016-05-26 22:14 381 查看
命令被拆分为词之后,如果结果是一个简单的命令和可选的参数列表中,采取如下措施。

如果命令名中没有斜杠,shell试图找到它。如果存在该名称的shell函数,如函数上述的函数被调用。如果名称不匹配功能,在shell内建命令的列表,它外壳搜索。如果发现匹配,即内建被调用。

如果名称既不是shell函数也不是一个内建命令,并且没有包含斜杠,bash的搜索路径中的每个元素包含该名称的可执行文件的目录。 Bash使用一个哈希表来记忆可执行文件的完整路径(见散在shell内建下面命令)。如果哈希表中没有找到的命令路径的完整的搜索目录的,才执行。如果搜索不成功,在定义的shell函数shell搜索名为command_not_found_handle。如果该功能存在,它被调用与原来的命令和原始命令的参数作为它的参数,函数的退出状态成为shell的退出状态。如果没有定义功能,外壳输出错误消息并返回退出状态127。

如果搜索是成功的,或如果该命令名包含一个或多个斜线,外壳执行在一个单独的执行环境中的命名方案。

参数0被设置为给定的名称,如果任何其余参数与命令被设置为给定的参数。

如果因为该文件不是可执行格式,并且该文件不是目录此执行失败,就被认为是一个shell脚本,包含shell命令的文件。子shell被产生执行它。此子shell重新初始化自身,使得效果就好像新的外壳已被调用来处理脚本,不同之处在于由父想起命令的位置(见下文SHELL内置命令散列)由子被保留。

如果程序以#开头的文件!在第一行的其余部分用于指定程序的解释器。shell执行的操作系统不处理这种可执行格式自己指定的解释。要解释的参数包括以下的程序的第一行解释器的名字一个可选参数,其次是程序的名称,然后是命令行参数的,如果有的话。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: