【发布时间】:2017-01-15 11:27:25
【问题描述】:
我有一个简单的 ruby 脚本文件:
#!/usr/bin/env ruby
puts "Hello World"
当我使用 strace 运行它时:
$ strace -s 100 -f ./script2
我得到以下成功的execve 调用序列:
execve("./script2", ["./script2"], [/* 85 vars */]) = 0
execve("/home/omar/.rvm/rubies/ruby-2.3.1/bin/ruby", ["ruby", "./script2"], [/* 85 vars */]) = 0
这些我期待出现,但输出没有任何执行/usr/bin/env 命令的行。为什么会这样? env 命令是否在内部被execve 系统调用调用?我想知道以执行ruby 解释器二进制文件结尾的事件序列。
【问题讨论】: