当前位置: 首页 > 面试题库 >

bash和Linux内核中的Shebang行数限制

邓焱
2023-03-14
问题内容

我正在尝试执行zc.buildout自动生成的python脚本,因此我无法控制它们。我的问题是,对于bash(最多80个字符)或直接执行(某些我不知道的Linux内核常量),shebang行(#!)太长了。

这是一个示例脚本,可帮助您重现我的问题:

#!/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././bin/bash
echo Hola!

bash或内核如何配置为允许更大的shebang行?


问题答案:

由于内核编译时间缓冲区的限制,在99.9%的系统上限制为127个字符。

它受内核限制BINPRM_BUF_SIZE,设置为include/linux/binfmts.h



 类似资料:
  • 问题内容: 当类似Bash的脚本以二进制形式执行而没有shebang时,如何确定由谁执行? 我猜想 使用 shebang 运行普通脚本是由binfmt_script Linux模块处理的,该模块检查shebang,解析命令行并运行指定的脚本解释器。 但是,如果有人在没有脚本的情况下运行脚本会发生什么?我已经测试了直接方法,发现里面没有内核魔术,即像这样的文件: 运行仅执行调用的已编译C程序将产生:

  • 基数树 正如你所知道的 Linux 内核通过许多不同库以及函数提供各种数据结构以及算法实现。 这个部分我们将介绍其中一个数据结构 Radix tree。Linux 内核中有两个文件与 radix tree 的实现和API相关: include/linux/radix-tree.h lib/radix-tree.c 首先说明一下什么是 radix tree 。Radix tree 是一种 压缩 tr

  • Linux内核对很多数据结构提供不同的实现方法,比如,双向链表,B+树,具有优先级的堆等等。 这部分考虑这些数据结构和算法。 双向链表 基数树 位数组

  • Linux内核对很多数据结构提供不同的实现方法,比如,双向链表,B+树,具有优先级的堆等等。 这部分考虑这些数据结构和算法。 双向链表 基数树 位数组

  • 问题内容: 我该怎么做: N代表数字。 但是在Linux Bash脚本中 问题答案: 使用ceil函数调出脚本语言。鉴于: 要么

  • 主要内容:initramfe虚拟文件系统GRUB 加载了内核之后,内核首先会再进行二次系统的自检,而不一定使用 BIOS 检测的硬件信息。这时内核终于开始替代 BIOS 接管 Linux 的启动过程了。 内核完成再次系统自检之后,开始采用动态的方式加载每个硬件的模块,这个动态模块大家可以想象成硬件的驱动(默认 Linux 硬件的驱动是不需要手工安装的,如果是重要的功能,则会直接编译到内核当中;如果是非重要的功能,比如硬件驱动会编译为模块