bash如何执行ELF文件?

约翰尼·弗洛姆

当我在Linux Box上时,我使用bash作为外壳。现在,我想知道bash如何处理ELF文件的执行,也就是说,当我键入./program且program是ELF文件时。我grep了bash-4.3.tar.gz,似乎没有某种魔术数字解析器可以确定文件是否为ELF,也没有找到exec()syscall。

整个进程如何运作?bash如何将ELF的执行传递给OS?

沃伦·杨(Warren Young)

Bash对ELF一无所知。它只是看到您要求它运行一个外部程序,因此它将它的名称原样传递给execve(2)诸如可执行文件格式,shebang行和执行权限之类的知识都位于内核中的syscall后面

(对于其他shell,这是相同的,尽管它们可能选择使用该exec(3)系列中的另一个函数。)

在bash 4.3,这种情况对5195线execute_cmd.cshell_execve()功能。

如果你想在源代码级一定要了解Linux,我建议下载的副本研究的Unix V6或V7,并通过去,而不是所有的是现代的Linux系统的复杂性。狮子书是代码的良好指南。

V7是Bourne shell首次亮相的地方。它的整个C源代码只是Bash中一个C文件大小的一半多一点。V6中Thompson外壳几乎是原始Bourne外壳的一半。但是,这两个较简单的Shell都执行与Bash相同的操作,并且出于相同的原因。(这似乎是execv(2)texec()Thompson shell中execve()调用的,并且是execs()在Bourne shellservice.c模块中调用。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

bash如何使文件可执行?

来自分类Dev

ELF可执行文件

来自分类Dev

如何使用十六进制编辑器在Linux中制作可执行的ELF文件?

来自分类Dev

如何在Mac OS X上创建ELF可执行文件?

来自分类Dev

如何使GDB将我的手工可运行ELF文件识别为可执行文件?

来自分类Dev

从Python执行bash文件

来自分类Dev

bash文件执行

来自分类Dev

Bash文件执行失败

来自分类Dev

BASH:如何对一组文件名执行rm?

来自分类Dev

如何在单击按钮时从php执行bash文件

来自分类Dev

如何清除Bash可执行文件路径的缓存?

来自分类Dev

如何为bash为ash执行“〜/ .bashrc”之类的文件?

来自分类Dev

如何使用Bash执行这2个文件搜索?

来自分类Dev

在vim中保存文件之后如何执行bash / zsh命令?

来自分类Dev

如何调整bash文件在单个节点上执行

来自分类Dev

取消链接ELF可执行文件

来自分类Dev

我如何获得ELF文件的值?

来自分类Dev

如何使用GCC生成ELF文件?

来自分类Dev

ELF文件格式如何定义堆栈?

来自分类Dev

如何执行bash脚本?

来自分类Dev

从CMake文件执行bash命令

来自分类Dev

如何使用自己的.bash_logout文件执行bash(在脚本中)?

来自分类Dev

如何执行外壳文件?

来自分类Dev

* .pyc文件如何执行?

来自分类Dev

如何执行 .sh 文件

来自分类Dev

初始化ELF可执行文件的C文件?

来自分类Dev

如何从C执行bash命令?

来自分类Dev

如何停止执行bash脚本?

来自分类Dev

如何从Github执行Bash脚本?