[英]Command line options
我對Ruby命令行選項感到困惑。 -C dir
和-X dir
刪除目錄,但它們如何相互不同?
-x [dir]
與-X dir
什么不同? -I dir
做什么(我知道它添加了dir
作為加載庫的目錄)? 讓我們在主目錄中創建一個test.rb文件,其中包括:
hello
#!/usr/bin/ruby
p "here"
現在,如果我們嘗試運行它:
ruby -C /home/my_home test.rb
這意味着將工作目錄更改為/ home / my_home並運行test.rb會出現錯誤:
test.rb:1:in `<main>': undefined local variable or method `hello' for main:Object (NameError)
如果我們運行它:
ruby -x /home/my_home test.rb
我們將“打印”到這里並且沒有錯誤。 -x和-C之間的主要區別在於-x刪除#!/usr/bin/ruby
行之前的所有內容。 當使用-x時,您也不必將目錄設置為cd。 因為-x的主要目的是刪除行,如果需要,它也只包括-C功能。
cd /home/my_home; ruby -x test.rb
見(ruby --help)
至於-I。 您可以提供ruby將搜索您執行或要求的文件的目錄。
ruby -x test.rb
除非您在/ home / my_home中,否則Ruby將找不到test.rb文件。 但是如果你添加-I ruby也會在“/ home / my_home”中查找test.rb。
ruby -x -I/home/my_home test.rb
與-C的不同之處在於它在執行之前不會更改目錄,而只會在那里搜索文件。
-C和-X選項執行相同的工作(執行前更改目錄)。 沒有區別。
-I選項用於添加$ LOAD_PATH的路徑
例如:假設你在my_lib目錄my_print_class.rb中有一個名為my_print_class.rb的ruby文件:(〜/ my_lib / my_print_class.rb)
class MyPrintClass
def self.my_print(str)
puts str
end
end
現在你家里有my_call.rb(〜)。
〜/ my_call.rb:
require 'my_print_class'
MyPrintClass.my_print("Hello world")
為此你需要my_print_class的路徑,所以你使用ruby -I my_lib my_call.rb
http://www.tutorialspoint.com/ruby/ruby_command_line_options.htm
正如你可以從man ruby
或一些在線文檔中看到的那樣, -C
和-X
是相同的。
並且-I
將為ruby LOAD_PATH添加一些目錄。 例如,我有./a/my.rb
和`./test.rb'這樣:
# ./a/my.rb
def hello
puts 'hello from a/my'
end
# ./test.rb
require 'my'
hello
我執行ruby -I ./a test.rb
這將從hello from a/my
打印hello from a/my
。 如果沒有-I
,ruby將報告錯誤: cannot load such file -- my
,因為./a
不在當前的LOAD_PATH中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.