2009-03-31 28 views
8

Tôi đang sử dụng OS X (có bash) và một newbie tại unix. Tôi muốn biết nếu nó có thể sửa đổi một số tập tin như vậy mà để chạy một chương trình ruby, tôi không cần "ruby file.rb", nhưng thay vào đó chỉ có thể chạy "ruby.rb".Khởi chạy Ruby mà không cần tiền tố "Ruby"

Có lý do gì để KHÔNG làm điều này không?

Cảm ơn!

Trả lời

25

Có, bạn có thể thực hiện việc này.

Giả sử ruby.rb có một cái gì đó như thế này trong nó:

#!/usr/bin/env ruby 
puts 'Hello world' 

Tại dòng lệnh: chmod +x ruby.rb

này làm cho nó thực thi.

Sau đó, bạn có thể thực hiện nó như thế này:

./ruby.rb 

Để biết thêm chi tiết, xem wikibooks.

EDIT (Jörg W Mittag): Sử dụng #!/usr/bin/env ruby thay vì #!/usr/bin/ruby như dòng công việc là xách tay hơn, bởi vì trên mỗi Unix được sản xuất trong vòng 20 năm trở lại đây, các lệnh env được biết đến sống ở /usr/bin, trong khi của Ruby cài đặt thường khắp nơi. (Ví dụ: tôi sống ở /home/joerg/jruby-1.2.0/bin/ruby.)

4

chmod + x/path/to/file

Không có lý do để không làm điều đó, miễn là bạn có tiền tố người phiên dịch với một công việc (#!/Usr/local/ruby ​​hoặc bất cứ con đường là trên OSX). Vỏ không quan tâm.

2

Đặt đúng shebang làm dòng đầu tiên của tệp của bạn. ví dụ:

#!/usr/bin/ruby 

trong vỏ, làm cho các tập tin thực thi

chmod +x file 
6

Như những người khác đã đề cập, bạn muốn có một công việc (#!) dòng ngay từ đầu, và thay đổi các điều khoản để thực thi.

Tôi khuyên bạn nên sử dụng #!/usr/bin/env ruby thay vì đường dẫn đến Ruby trực tiếp, vì nó sẽ làm cho tập lệnh của bạn dễ dàng hơn với các hệ thống có thể cài đặt Ruby trong các thư mục khác nhau; env sẽ tìm kiếm trong đường dẫn tìm kiếm của bạn, và vì vậy nó sẽ tìm thấy cùng một Ruby mà bạn sẽ thực hiện nếu bạn chạy ruby trên dòng lệnh.Tất nhiên, điều này sẽ có vấn đề nếu env là ở một vị trí khác nhau, nhưng nó là phổ biến hơn nhiều cho env để được ở /usr/bin/env hơn cho Ruby để được ở /usr/bin/ruby (nó có thể nằm trong /usr/local/bin/ruby, /opt/bin/ruby, /opt/local/bin/ruby, vv)

#!/usr/bin/env ruby 
puts "Hello!" 

Và làm cho nó thực thi:

chmod +x file.rb 
+0

+1 để đảm bảo rằng dòng shebang của bạn sẽ sử dụng bất kỳ thứ gì Ruby nằm trong đường dẫn của bạn. Khi bạn nâng cấp, đôi khi nó đặt phiên bản mới ở một nơi hoàn toàn khác với cài đặt hiện tại. –

+0

Đúng, đó là lý do tôi đăng nội dung này; câu hỏi đã được nhiều người trả lời, nhưng tôi cảm thấy như vậy là điều quan trọng cần đề cập đến/usr/bin/env vì lý do đó. –

3

Nếu bạn muốn làm bất cứ điều gì phức tạp hơn với chạy ứng dụng này, bạn luôn có thể tạo ra một kịch bản shell:

#! /bin/sh 
ruby ruby.rb 

Nếu bạn lưu nó vào run_script, bạn chỉ cần phải chmod + x nó như đã đề cập trước đây, sau đó thực hiện lệnh sau:

$ ./run_script 

tôi nghi ngờ điều này sẽ là bất kỳ hữu ích hơn trong tình hình cụ thể của bạn hơn các giải pháp đã được đề cập, nhưng đáng chú ý vì lợi ích của đầy đủ.

Các vấn đề liên quan