gpt4 book ai didi

shell -/usr/bin/env 有什么作用?

转载 作者:行者123 更新时间:2023-12-03 20:33:35 25 4
gpt4 key购买 nike

#! /usr/bin/env ruby有什么区别和 #! ruby ?

(我发现许多其他问题讨论了 #! /usr/bin/env ruby#! /usr/bin/ruby 之间的区别,但这不是我的问题。)

最佳答案

#! ruby

...根本不能保证在类 UNIX 系统上工作(并且不能在我个人知道的任何系统上工作);一个有效的 shebang 必须有一个完全合格的路径。告诉您的编辑器您正在使用哪种编程语言可能就足够了,但这并不意味着内核会成功地使用它来选择一个解释器来运行程序。

内核的 execve syscall 不执行 PATH 查找——这是由 C 标准库包装器添加的,例如 execlpexecvp ,但解析shebangs 是由内核直接完成的,因此您的C 库功能不会在那里发生。
#!/usr/bin/env ruby

...使用 PATH 查找 ruby 的位置可执行。因为路径是 env可执行文件是完全指定的,这是一个有效的shebang行( #! ruby不是)。
env也有其他用途——例如,您可以运行 env -i someprog运行 someprog使用完全空的环境,或 env FOO=bar someprog运行 someprog与环境变量 FOO设置为值 bar (如果通过 shell 运行, FOO=bar someprog 也可以,但 env 方法也适用于不涉及 shell)。

但是,此上下文中的相关用例是强制进行 PATH 查找。

关于shell -/usr/bin/env 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39356694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com