Ruby:内核#`权限被拒绝运行命令

Bra*_*cil 4 ruby

在试图了解Ruby执行方法时,我发现这篇博客文章介绍了在Ruby中运行命令的五种方法 http://mentalized.net/journal/2010/03/08/5_ways_to_run_commands_from_ruby/

作者创建了一个文件err.rb,它输出两行,一行在STDOUT上,另一行在STDERR上

#!/usr/bin/env ruby
puts "out"
STDERR.puts "error"
Run Code Online (Sandbox Code Playgroud)

他尝试运行它的第一种方法是使用Kernal#`(反引号)

 >> `./err.rb`

      err
=> "out\n"
Run Code Online (Sandbox Code Playgroud)

这说明了在使用反引号运行时

STDERR is output, but not captured
STDOUT is captured
Run Code Online (Sandbox Code Playgroud)

当我试图在我的系统上复制它时,我收到了一个权限错误

localhost:sites mike$ `./err.rb`
-bash: ./err.rb: Permission denied
Run Code Online (Sandbox Code Playgroud)

./err.rb没有改变就尝试了sudo .

我可以跑,ruby err.rb但产生的结果与作者得到的结果不同.即通过运行ruby err.rb我得到

  out
  error
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么我试图用反引号运行它时会遇到权限错误,而且通常用反引号运行它的目的是什么.

Ana*_*ani 5

尝试添加权限执行,使用"chmod + x that_file_name"执行使用格式"./file"'文件'需要具有执行权限

它在ruby时运行,因为ruby具有执行权限,它只是读取该文件.

试试这个

localhost:sites mike$ chmod +x err.rb
Run Code Online (Sandbox Code Playgroud)