Tôi muốn biết nếu có thể thay đổi thư mục thiết bị đầu cuối hiện tại từ nơi tôi đang thực thi kịch bản ruby của mình.Làm thế nào để (thiết bị đầu cuối) cd trong thư mục từ kịch bản ruby
Ví dụ: nếu tôi đang thực thi tập lệnh từ $HOME
trong thiết bị đầu cuối, tôi muốn cd ở $HOME/mydir
ở cuối tập lệnh.
Tôi đã thử một vài điều, nhưng tôi luôn tìm kiếm trong cùng một bộ phim mà kịch bản được bắt đầu.
Những điều tôi đã cố gắng:
Dir.chdir(mydir)
%[cd mydir]
Họ thực sự làm thay đổi thư mục, nhưng chỉ trong các chủ đề của việc thực hiện kịch bản. Khi kịch bản kết thúc, vị trí hiện tại của tôi trong thiết bị đầu cuối vẫn như cũ trước khi khởi chạy tập lệnh.
Tôi đã tìm thấy điều gì đó tương tự trong SO, nhưng đó là Python-related và phản hồi có vẻ tiêu cực.
Bạn có thể hỏi tại sao?
Tôi hiện đang tham gia vào một ứng dụng dòng lệnh (sử dụng gli
) mà, như điểm bắt đầu, cần một thư mục dự án. Vì vậy, lệnh đầu tiên của tôi trông giống như:
$ myfoo new project
Tạo thư mục mới có tên project
trong thư mục hiện tại. Bây giờ để có thể làm việc với các lệnh khác tôi cần phải:
$ cd project
project$ myfoo domore
Vì vậy, tôi đã đơn giản nghĩ rằng nó sẽ được tốt đẹp để tìm thấy tự của tôi trong project
sau khi đã thực hiện myfoo new project
.
Như tôi đã sợ, nó không phải là dễ dàng (không thể). Vì vậy, những gì về cách sử dụng một kịch bản bash mà ruby gọi là tôi muốn, thay cho tập tin chuẩn được tạo ra bởi RubyGems? Điều đó có khả thi không? Tôi có ngu ngốc không? Tôi có nên sử dụng eval
không?
Cảm ơn câu trả lời. Nhưng tôi sợ rằng không ai được chấp nhận. Có lẽ câu hỏi không phải là :).
Có vẻ như bạn sẽ không thể thực hiện việc này. Bất kỳ lời gọi hệ thống nào từ ruby đều hoạt động trong một luồng khác từ tập lệnh/trình bao của bạn và sẽ không ảnh hưởng đến vị trí hiện tại. Bạn đang hy vọng sử dụng điều này để làm gì? –
@ Douglas-F-Shearer: Tôi đã mở rộng lý do của tôi một chút trong câu trả lời –
chỉ vì tò mò, tại sao câu trả lời của tôi không hoạt động? Tôi đã sử dụng kỹ thuật này một vài lần, và tôi không rõ làm thế nào nó không phù hợp với tình hình của bạn. – Ian