5 ruby
我是编程新手,我正在尝试使用#!评论ruby.
我一直得到消息:bash:matz.rb:命令未找到
我正在使用这个评论:#!/ usr/bin/env ruby
我曾经尝试过,有没有空间!以及有和没有环境.
当我使用$ ruby时
ruby在:/ usr/bin/ruby
我也进入了操作系统并将文件matz.rb的权限更改为rwx,对所有用户都没有影响.我做错了什么或者我的系统设置不正确?
Dou*_*oug 10
这/usr/bin/env部分很好.运行时,你需要给bash指向matz.rb的路径.如果您在matz.rb目录中,请键入"./matz.rb".目录"." 表示当前目录 - 运行程序时默认情况下bash不会显示在那里(如Windows).
env程序(/ usr/bin/env)为程序搜索可执行搜索路径(PATH环境变量),ruby就像在命令提示符下键入它一样,然后运行该程序.shebang评论没有这样做.如果你想把你的脚本交给其他可能没有安装ruby的人,那么你应该使用" #!/usr/bin/env ruby"注释,这样只要他们可以通过键入"ruby"来运行ruby,它就会起作用.
如果您与matz.rb文件位于同一目录中,请确保将其作为
$ ./matz.rb
Run Code Online (Sandbox Code Playgroud)
而不只是
$ matz.rb
Run Code Online (Sandbox Code Playgroud)
这是一个shell会话,演示了这个工作:
$ ls -la m*
-rwxr-xr-x 1 gareth gareth 32 8 Jan 08:46 matz.rb
$ cat matz.rb
#!/usr/bin/env ruby
puts "Matz"
$ matz.rb
-bash: matz.rb: command not found
$ ./matz.rb
Matz
Run Code Online (Sandbox Code Playgroud)
您是否尝试过如下的 ShaBang 直接指向 ruby ?
#! /usr/bin/ruby
Run Code Online (Sandbox Code Playgroud)
然后您从命令行调用脚本
./matz.rb
Run Code Online (Sandbox Code Playgroud)
在Unix/Linux系统下,命令前面的点用于在当前目录中搜索该命令。如果你给出像 /usr/bin/ruby 这样的路径,它将在当前目录中搜索名为 usr... 的目录。
前面没有点/的命令将在环境的路径变量指定的位置中搜索。
以 / 开头的命令将按照指定路径从根目录开始精确搜索。
在 ShaBang 中,您需要指定解释器的确切路径,因此“/usr/bin/ruby”是正确的路径。在命令行上,您希望执行脚本的位置,需要使用“./matz.rb”调用脚本,否则 bash 将搜索类似 /usr/bin/matz.rb 的命令,从而导致错误消息。
| 归档时间: |
|
| 查看次数: |
2186 次 |
| 最近记录: |